[Unreal Engine] Delegate에 대한 설명

민혁 공부방·2024년 11월 12일

Delegate 란?

  • 함수를 바인딩하는 형태로 등록시켜 CallBack함수와 같이 활용할 수 있다.

현재 수업시간에 C++에서 충돌감지 컴퍼넌트에서 AddDynamic 매크로를 동해, 충돌시 등록한 CallBack함수를 호출하는식으로 진행하였다.


우선 Delegate를 함수 시그니처와 비교하였다.

  1. DECLARE_DELEGATE(Name) - 매개변수가 없고, 반환형이 없다.
  2. DECLARE_DELEGATE_OneParam(Name, Param1Type) - 매개변수가 하나가 있는 경우
    -> SingleCast로 들어가게 된다.
  3. DECLARE_MULTICAST_DELEGATE(Name) - 똑같이 매개변수가 없고, 반환형이 없다.
  4. DECLARE_MULTICAST_DELEGATE_OneParam(Name, int32) - 매개변수가 하나 있는 경우


보통 FBoxLightOverlap 이 델리게이트 매개변수라고 보면되고,
OnBoxLightBeginOverlap이 호출형인데,
보통 호출할 때
OnBoxLightBeginOverlap.IsBound() 이런식으로 호출하게 되는 것


여기서, Single과 Multi의 차이점
호출해서 실행할 때
Single : Execute() 함수를 쓰고,
Multi : BroadCast() 함수를 쓴다.

또한 해제할 때는,
Single : UnBind() 함수를 쓰고,
Multi : Clear() 함수를 쓴다.

이렇게 차이가 있으며,

UFUNCTION으로 바인딩을 직렬화를 해주고,

BeginPlay()에서 호출해주는식.
단, Multi는 여러개의 함수를 바인딩할수 있다는 차이가 있다.


Event : 블루프린트에서 사용할 수 있으며, 자식클래스에서도 재정의가 가능하다. (단, 전역으로 사용 불가능)
DECLARE_SPARSE_MULTICAST : 멀티캐스트와의 성능은 같지만, 메모리측에서 더 효율적으로 관리한다는 장점이 있다.

profile
한번 더 복습하기 위한 개인 공간입니다!

0개의 댓글