[UE4] 멀티 델리게이트, 이벤트 델리게이트(DECLARE_MULTICAST_DELEGATE, DECLARE_EVENT)
💻 멀티 델리게이트 - DECLARE_MULTICAST_DELEGATE
DECLARE_MULTICAST_DELEGATE를 사용해보기 위해 두 개의 매개변수를 갖는 델리게이트를 사용해보았다.
다른 예제들과 마찬가지로 테스트 Box 콜라이더에 Overlap 충돌되면 델리게이트에 등록된 함수들을 모두 호출하도록 구현하였다.
다른 클래스로 랜덤으로 3개의 Box 중 하나를 떨어뜨리는 FallingBox 클래스, SpotLight를 랜덤 색상으로 켜는 클래스 두 개를 만들었다.
각각의 클래스에서 Multi 델리게이트에 AddUFunction 함수로 등록해주었는데, MULTI는 단일 델리게이트에서 사용한 BindUFunction함수가 아니라 여러개를 추가한다는 의미로 AddUFunction 함수를 사용하여 함수를 등록한다.
또한 멀티 델리게이트는 Broadcast 함수를 통해 외부에서 Trigger를 호출하여 사용할 수 있다.
![]() |
![]() |
결과적으로 테스트 박스에 충돌될 때 Falling Box 기능과 Spot Light 기능이 트리거에서 정상호출되어 작동함을 알 수 있다.
💻 이벤트 델리게이트 - DECLARE_EVENT
이벤트는 Dynamic 델리게이트가 아닌 일반 델리게이트이므로, Multicast도 아니고, 여러개를 연결하지도 않으므로 Return 값도 없다.
다른 델리게이트는 클래스 위에다 선언하여 전역으로 사용했지만, 이벤트는 클래스 내부에 정의하여 사용한다.
마찬가지로 Event Trigger도 테스트 Box 콜라이더에 이벤트를 등록시켜 사용하였다.
또한 트리거가 선언된 내부 클래스이기 때문에 Broadcast 함수를 사용하여 등록된 함수를 실행시켰다.
이후 외부 클래스인 Explosion 클래스에서 폭팔 파티클이 실행되는 함수 OnExplosion을 트리거의 함수로 등록하였다.
(사실 여기는 트리거의 외부 클래스이므로 Broadcast가 사용되면 안되는데, 왠지 모르게 (4.25,4.26 버전에서는) 언리얼 버그로 사용이 된다..........)
게임 플레이 시 테스트 박스에 충돌하는 순간 이벤트 트리거에 등록된 파티클이 실행되는 모습을 볼 수 있었다.