C++ - Delegate

JUSTICE_DER·2023년 3월 6일
0

🌵UNREAL

목록 보기
24/42

이 글은 해당 코드 한 줄로부터 생겨난다.

델리게이트 개념
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/

델리게이트 개념 영상 설명
https://www.youtube.com/watch?v=eloA2E6xs28

델리게이트는 함수를 담기 위한 사용자 정의 자료형같은 느낌이 있다.
함수의 주형틀인 template과 유사하다고 봐도 될 것 같다.


OnComponentBeginOverlap - 충돌 관련 변수

AddDynamic - Helper macro to bind a UObject instance
and a member UFUNCTION to a dynamic multi-cast delegate.

매개변수로 들어온 (this)와 (OnHit)을 dynamic multi-cast delegate한다고 되어있다.

dynamic multi-cast delegate -
[공식문서]

  • Multicast Delegate
    In the case of multicast delegates, any number of entities within your code base can respond to the same event and receive the inputs and use them.

  • Dynamic Delegate
    In the case of dynamic delegates, the delegate can be saved/loaded within a Blueprint graph (they're called Events/Event Dispatcher in BP).

그러니까 Dynamic을 하면 BP에서 delegate자료형을 편집할 수 있게되는 것이고,
Multicast를 하면, 모든 엔티티가 동일한 이벤트Overlap에 응답할 수 있게 설정된다는 것이다.

Delegate와 모든 엔티티가 동일한 이벤트에 응답하는 것과 무슨 관계일까?
Walking이라는 함수와 Jumping이라는 함수가 각각 AddDynamic(this의 인자로 들어가게되면,
모든 엔티티의 걷기와 점프가 같이 실행된다는 의미일까?

동작원리에 대해서는 매크로 정의되어서 세부적으로 모르겠다.
#define AddDynamic( UserObject, FuncName )
__Internal_AddDynamic( UserObject, FuncName,
STATIC_FUNCTION_FNAME( TEXT( #FuncName ) ) )

모든 엔티티는 뭘 말하는 건가?
= AddDynamic으로 추가한 같은 클래스의 다른 오브젝트들을 의미?

//동적바인딩, 멀티캐스트
RamaMeleeWeaponComp->RamaMeleeWeapon_OnHit.AddDynamic(thi...

//비동적바인딩, 멀티캐스트
RamaMeleeWeaponComp->RamaMeleeWeapon_OnHit.**AddUObject**(thi...

//비동적바인딩, 비멀티캐스트
RamaMeleeWeaponComp->RamaMeleeWeapon_OnHit.**BindUObject**(thi...
profile
Time Waits for No One

0개의 댓글