본 캠프 TIL

26.07.06 TIL / 팀플 슈터 게임 4일차, 델리게이트

jh009 2026. 7. 6. 21:33

오늘

[프로젝트] C++로 구현하는 언리얼 엔진 5 기반 슈터 게임 프로젝트

 

7/6 회의 정리


UserWidget 수정

UserWidget.h

 

UserWidget.cpp
UserWidget.cpp


  • 매 프레임마다 게임 상태 변수를 확인하게 된다면, 불필요한 연산이 반복되어 CPU 성능 저하 유발
  • 이벤트 기반 시스템을 적용하여, 데이터가 실제로 변화하는 시점(AddKill 발생 시)에만 UI 갱신 로직을 수행하는 함수가 필요함
  • 불필요한 호출을 제거하여 연산 비용을 최적화 작업

델리게이트(Delegate)

특정 이벤트 발생 시 미리 등록된 함수들을 호출하는 콜백(Callback) 시스템

객체 간 직접적인 참조 없이 이벤트를 전파하여, 결합도(Coupling)를 낮추고 유지보수성을 향상

 

작동 방식

선언: DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam (매크로를 통해 이벤트 규격 정의)

수신 객체 → AddDynamic을 통해 이벤트를 바인딩

발신 객체 → Broadcast를 호출하여 데이터 전달

 

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam

Dynamic: 언리얼의 리플렉션 시스템을 사용하여 블루프린트에서 제어 가능

Multicast: 하나의 이벤트에 여러 함수를 연결 가능

OneParam: 이벤트 발생 시 전달할 인자가 1개임을 명시

 

BlueprintAssignable

해당 델리게이트를 블루프린트에서 이벤트 노드로 사용할 수 있도록 노출함

C++에서 정의된 로직을 블루프린트에서 시각적으로 확인하고 바인딩할 수 있게 하여 확장성을 제공

 

NativeConstruct()

UUserWidget의 생명주기 함수로, 위젯이 생성되고 레이아웃이 초기화되는 시점에 호출됨

델리게이트 바인딩 등 위젯의 초기화 로직을 수행하기에 가장 적절한 오버라이드 지점


회고

팀원과 협업하는 과정이 쉽진 않다. 그래도 서로 조금씩 맞춰 나아가며 진행이 되고 있으니 기간 안에 완성을 반드시 할 것이다.