멀티캐스트 델리게이트

여러 함수에 바인딩시켜 동시에 실행시킬수 있는 델리게이트 입니다.

Choose your operating system:

Windows

macOS

Linux

멀티캐스트(multi-cast) 델리게이트는 싱글캐스트 델리게이트의 기능 대부분을 그대로 갖고 있습니다. 오브젝트로의 약 레퍼런스만 갖고 있으며, 구조체와 함께 사용 가능하고, 쉽게 복사할 수 있고, 등등입니다. 보통의 델리게이트와 마찬가지로 멀티캐스트 델리게이트 역시 로드/세이브 가능하며 원격으로 트리거되나, 멀티캐스트 델리게이트 함수는 반환값을 사용할 수는 없습니다. 델리게이트 컬렉션을 쉽사리 옮기는 데 사용하기에 좋습니다.

[](programming-and-scripting/programming-language-implementation/delegates-and-lamba-functions-in-unreal-engine\Events)
는 특수한 유형의 멀티캐스트 델리게이트로, 제한적이나마 Broadcast(), IsBound(), Clear() 함수에 접근 가능합니다.

멀티캐스트 델리게이트 선언

멀티캐스트 델리게이트는

[표준 델리게이트 선언](programming-and-scripting/programming-language-implementation/delegates-and-lamba-functions-in-unreal-engine#델리게이트선언하기)
방법과 똑같은 방법으로 선언되나, 멀티캐스트 델리게이트 전용 매크로를 사용한다는 점이 다릅니다.

선언 매크로

설명

DECLARE_MULTICAST_DELEGATE[_RetVal, etc.]( DelegateName )

멀티캐스트 델리게이트를 생성합니다.

DECLARE_DYNAMIC_MULTICAST_DELEGATE[RetVal, etc.]( DelegateName )

다이내믹 멀티캐스트 델리게이트를 생성합니다.

멀티캐스트 델리게이트 바인딩

멀티캐스트 델리게이트는 여러 개의 함수를 바인딩시켜 델리게이트가 발동되면 모두 호출되도록 할 수 있습니다. 그 결과, 의미론적으로 함수 바인딩이 변수같은 식에 좀 더 가깝습니다.

함수

설명

Add()

이 멀티캐스트 델리게이트의 실행 목록에 함수 델리게이트를 추가합니다.

AddStatic()

raw C++ 포인터 글로벌 함수 델리게이트를 추가합니다.

AddRaw()

raw C++ 포인터 델리게이트를 추가합니다. raw 포인터는 어떠한 레퍼런스도 사용하지 않기에, 오브젝트가 자신의 델리게이트 하에서 삭제된 경우 호출시 안전하지 않을 수 있습니다. Execute() 호출시 주의하세요!

AddSP()

공유 포인터 기반 (빠르지만 스레드 안전성은 떨어지는) 멤버 함수 델리게이트를 추가합니다. 공유 포인터 델리게이트는 자신의 오브젝트에 대한 약 레퍼런스를 유지합니다.

AddUObject()

UObject 기반 멤버 함수 델리게이트를 추가합니다. UObject 델리게이트는 자신의 오브젝트에 대한 약 레퍼런스를 유지합니다.

Remove()

이 멀티캐스트 델리게이트의 실행 목록에서 함수를 제거합니다 (퍼포먼스는 O(N) 입니다). 참고로 델리게이트 순서는 유지되지 않을 수 있습니다!

RemoveAll()

지정된 UserObject 에 바인딩된 이 멀티캐스트 델리게이트의 실행 목록에서 모든 함수를 제거합니다. 참고로 델리게이트 순서는 유지되지 않을 수 있습니다!

RemoveAll() 은 제공된 포인터에 바인딩된 모든 등록 델리게이트를 제거합니다. 염두에 둘 것은, 오브젝트 포인터에 바인딩되지 않은 raw 델리게이트는 이 함수로 제거되지 않습니다!

이 함수의 변종, 인수, 구현 관련 자세한 내용은 ..\UE4\Engine\Source\Runtime\Core\Public\Delegates\ 에 있는 DelegateSignatureImpl.inl 을 참고하시기 바랍니다.

멀티캐스트 실행

멀티캐스트 델리게이트를 통해 여러 함수 델리게이트를 붙인(attach) 다음, 멀티캐스트 델리게이트의 Broadcast() 함수를 호출하여 그 모두를 동시에 실행시킬 수 있습니다. 멀티캐스트 델리게이트 시그너처에는 반환값을 사용할 수 없습니다.

멀티캐스트 델리게이트에서의 Broadcast() 호출은 아무것도 바인딩되어 있지 않더라도 항상 안전합니다. 딱 한 가지 경우 조심해야 할 때가 있는데, 델리게이트를 사용하여 출력 변수를 초기화시킬 때로 보통은 매우 좋지 않은 일입니다.

Broadcast() 호출시 바인딩된 함수의 실행 순서는 정의되지 않습니다. 함수가 추가된 순서대로 실행되지 않을 수가 있습니다.

함수

설명

Broadcast()

이 델리게이트를 만료되었을 수도 있는 것을 제외하고, 바인딩된 모든 오브젝트에 뿌립니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.