[UE4] 델리게이트 (Delegate)
델리게이트
C++ 오브젝트 상의 멤버 함수를 가리키고 실행시키는 데이터 유형이다. 임의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그런 다음 그 오브젝트에서 함수를 호출할 수 있다. 가급적이면 델리게이트는 항상 참조 전달을 해야하며, 종류는 이벤트, 다이나믹, 싱글-캐스트, 멀티-캐스트가 있다.
싱글 캐스트 : 가장 기본적인 델리게이트로 함수 1개를 바인드하여 사용.
멀티 캐스트 : 싱글 캐스트와 비슷하지만 여러 함수를 바인드 가능.
다이나믹 : 직렬화되어 블루프린트에서 사용 가능.
이 벤 트 : 멀티 캐스트와 비슷하지만 전역으로 설정할 수 없어 외부에서는 추가 델리게이트 선언이 불가능.
델리게이트 선언
//. 싱글 캐스트
DECLARE_DELEGATE(FDele_SingleCast);
DECLARE_DELEGATE_OneParam(FDele_SingleCast_OneParam, int32);
//. 멀티 캐스트
DECLARE_MULTICAST_DELEGATE(FDele_MultiCast);
DECLARE_MULTICAST_DELEGATE_TwoParm(FDele_MultiCast_TwoParam, bool, int32);
//. 다이나믹
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDele_Dynamic);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDele_Dynamic_OneParam, int32, SomeParameter);
UCLASS()
class TestProject ATestActor : public AActor
{
GENERATED_BODY()
public :
//. 이벤트
DECLARE_EVENT(ATestActor, FDele_Event);
DECLARE_EVENT_OneParam(ATestActor, FDele_Event_OneParam, int32);
}
바인드
델리게이트에 특정 바인드 함수를 통하여 콜백함수를 등록하는 것을 의미한다.
실행하기
Execute() : 델리게이트에 바인딩되어 있는 함수를 호출하여 실행.
ExecuteIfBound() : 반환값이 없는 델리게이트에 대해서는 이 함수를 통해 실행.
IsBound() : 델리게이트를 실행하기 전 바인딩이 되어있는지 확인 절차가 필요하며, IsBound() 함수를 통하여 바인딩이 되어있는지 확인 가능.
델리게이트에 대해서 알아보았는데 상당히 유용한 기능이며 델리게이트의 종류에 맞게 잘 활용한다면 더욱더 원활한 컨텐츠 구현이 될수 있을 것으로 보인다.
싱글캐스트에서 사용하는 함수들은 그 외 델리게이트에서 사용할 때 기능은 같지만 함수명이 바뀌는 부분이 있으니 주의하자.
Unbind() → Clear()
Execute() → Broadcast()
BindUFunction() → AddUFunction()
'Game Programming > UE4' 카테고리의 다른 글
[UE4] BindWidget (0) | 2023.10.28 |
---|---|
[UE4] Smart Pointer (0) | 2023.10.21 |
[UE4] TMap (0) | 2023.09.09 |
[UE4] TArray (0) | 2023.09.02 |
[UE4] Log (0) | 2022.10.13 |