멀티캐스트 델리게이트

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

Windows
MacOS
Linux

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

이벤트 는 특수한 유형의 멀티캐스트 델리게이트로, 제한적이나마 Broadcast(), IsBound(), Clear() 함수에 접근 가능합니다.

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

멀티캐스트 델리게이트는 표준 델리게이트 선언 방법과 똑같은 방법으로 선언되나, 멀티캐스트 델리게이트 전용 매크로를 사용한다는 점이 다릅니다.

선언 매크로

설명

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()

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

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼