본문 바로가기
Unreal/Manual

Unreal C++ Dynamic Delegate (다이나믹 델리게이트)

by Dev_카페인 2023. 11. 3.
반응형

[Unreal/C++] Dynamic Delegate (다이나믹 델리게이트)

 

언리얼에서는 C++ 에서만 사용할 수 있는 델리게이트와 블루프린트 객체에서도 사용가능한 다이내믹 델리게이트로 나뉜다. 블루프린트 객체와도 연동이 가능한 델리게이트를 언리얼 에서는 다이나믹 델리게이트(Dynamic Delegate)라고 한다.

 

블루프린트 오브젝트는 멤버함수에 대한 정보를 저장하고 로딩하는 직렬화 매커니즘이 들어있기 때문에 일반 C++언어가 관리하는 방법으로 멤버 함수를 관리할 수 없다.

그렇기 때문에 블루프린트와 관련된 C++함수는 모두 UFUNCTION 매크로를 같이 사용해 블루프린트에게 알려줘야한다.

 

다이나믹 델리게이트

- 함수 포인터가 아닌, 함수의 이름을 기반으로 등록해 호출하는 방식이다.

- 직렬화(serialize)가 가능하다

- 함수를 이름으로 찾을 수도 있다.

- 일반 델리게이트보다는 느리다.

- 다이나믹 델리게이트를 선언할 때 인자의 이름까지 정확히 일치해야 한다.

 

이름 기반으로 동작하다 보니 저장할 수 있다는 특징이 있지만, 동작이 느리다는 단점을 가지고 있고

블루프린트에서도 연결해야 하기 때문에 UFUNCTION 매크로로 알려주고 인자의 이름까지 정확히 일치해야 한다.

 

다이나믹 델리게이트 선언

 

다이나믹 델리게이트 바인딩

 

다이나믹 델리게이트 실행

델리게이트를 실행하기 전 "바인딩" 되었는지(IsBound()) 반드시 확인해야 한다.

바인딩되지 않은 델리게이트를 실행시키면 일부 인스턴스에서 메모리에 낙서를 해버릴 수가 있다.

반환값이 없는 델리게이트에 대해서는 ExecuteIfBound() 를 호출할 수 있으나, 출력 파라미터는 초기화되지 않을 수 있다.

 

 

 

 

 

 

 

 

 

 

 

반응형