델리게이트 4

[언리얼 C++] 이벤트

언리얼 엔진에서 이벤트는 여러 함수를 바인딩하여 모두 동시에 실행시킬 수 있는 델리게이트입니다. 이벤트는 멀티캐스트 델리게이트와 매우 유사합니다. (멀티캐스트 델리게이트에 대한 설명은 [언리얼 C++] 멀티캐스트 델리게이트 (tistory.com) 글을 참고하시기 바랍니다.) 이벤트도 멀티캐스트 델리게이트와 마찬가지로 아무 클래스에서나 함수 바인딩이 가능합니다. 하지만 이벤트는 멀티캐스트 델리게이트와 다른 점이 있습니다. 바로 멀티캐스트 델리게이트는 아무 클래스에서나 해당 델리게이트의 함수를 호출할 수 있는데, 이벤트는 해당 이벤트를 선언한 클래스만이 이벤트의 Broadcast(), IsBound(), Clear() 함수를 호출할 수 있습니다. 즉, 이벤트 오브젝트는 퍼블릭 인터페이스에 노출시켜도 Bro..

[언리얼 C++] 멀티캐스트 델리게이트

언리얼 엔진에서 멀티캐스트 델리게이트는 여러 함수를 바인딩시켜 바인딩된 모든 함수들을 동시에 실행시킬 수 있는 델리게이트입니다. 멀티캐스트 델리게이트는 싱글캐스트 델리게이트의 기능 대부분을 가지고 있습니다. - 오브젝트로의 약참조만 가지고 있습니다. - 구조체와 함께 사용이 가능합니다. - 쉽게 복사할 수 있습니다. - 로드/세이브가 가능하며 원격으로 트리거됩니다. 하지만 멀티캐스트 델리게이트는 보통의 델리게이트와 다른 점이 있습니다. 멀티캐스트 델리게이트의 함수 시그너처에서는 반환값을 사용할 수 없습니다. 그러므로 멀티캐스트 델리게이트에 바인딩시킬 함수들은 모두 void로 선언되어져야 합니다. 1. 멀티캐스트 델리게이트 선언하기 DECLARE_MULTICAST_DELEGATE(FMultiDele) //..

[언리얼 C++] 다이내믹 델리게이트

언리얼 엔진에서 다이내믹 델리게이트는 serialize가 가능하면서 리플렉션도 지원하는 델리게이트입니다. 언리얼 엔진에서 델리게이트는 C++ 객체에서만 사용할 수 있는 델리게이트와 C++과 블루프린트 객체가 모두 사용할 수 있는 델리게이트로 나뉩니다. 블루프린트 객체는 멤버 함수에 대한 정보를 저장하고 로딩하는 직렬화 매커니즘이 들어있기 때문에 일반 C++ 언어가 관리하는 방법으로 멤버 함수를 관리할 수 없습니다. 그래서 블루프린트와 관련된 C++ 함수는 모두 UFUNCTION 매크로로 선언해서 사용해줘야 합니다. 이렇게 블루프린트 객체와도 연동하는 델리게이트를 다이내믹 델리게이트라고 합니다. 다이내믹 델리게이트는 이러한 동작원리 때문에 일반 델리게이트보다 다소 느릴 수 있습니다. 1. 다이내믹 델리게이..

[언리얼 C++] 싱글캐스트 델리게이트

델리게이트는 C++ 오브젝트 상의 멤버 함수를 가리키고 실행시키는 데이터 유형입니다. 델리게이트를 사용하여 C++ 오브젝트 상의 멤버 함수를 안전한 방식으로 호출할 수 있습니다. 델리게이트를 사용하여 오브젝트의 멤버 함수에 동적으로 바인딩 시킬 수 있으며, 해당 함수를 다른 오브젝트에서 호출할 수 있습니다. 호출하는 오브젝트에서 멤버 함수가 정의된 오브젝트의 유형을 몰라도 가능합니다. 델리게이트 오브젝트는 값 복사를 해도 안전하지만 추천하지는 않습니다. Heap에 메모리를 할당해야 하기 때문입니다. 그래서 가급적이면 델리게이트는 항상 참조 전달을 해줘야 합니다. 델리게이트의 종류에는 싱글캐스트와 멀티캐스트가 존재하고, 디스크에 안전하게 Serialize 시킬 수 있는 다이내믹 델리게이트 또한 존재합니다...