쾌락없는 책임 (공부)/Unreal

[Unreal] unreal callback by delegate - 언리얼 콜백 만들기

허스크 2022. 8. 21. 22:11
반응형

서론 - 본론은 아래 코드에

 유니티의 C#에서는 델리게이트가 애초에 언어 기본 내장이기도 하고 Action 등의 키워드도 있어서 콜백을 구현하는게 어렵지 않았습니다. 그런데 이 언리얼에서는 어떻게 이걸 구현해야할지 몰랐고 엔진에서 만든 델리게이트가 있음은 알고 있지만 이를 제대로 사용하는 방법을 몰랐습니다. 

 이 그래서 이 콜백에 삽질을 좀 하게 되었고 여러 사이트를 돌아다니면서 델리게이트를 통해서 콜백을 만드는 방법을 알아내 간단하게 코드만 공유하도록 하겠습니다. 추후 델리게이트와 관련한 이야기들을 많이 공부한다면 이와 관련해서도 글을 써 보겠습니다.

 

 

 

델리게이트로 콜백 만들기

<상황>

NPC와의 대화 상황이 있고 Player는 대화중 멈추고 NPC를 바라봐야 합니다. 이후 대화가 끝나면 플레이어는 다시 움직일 수 있어야 합니다.

 

- NPC.h

DECLARE_DELEGATE(FCallbackVoidWithNoArg)

UCLASS()
class PRACTICERPG_API ANPC : public AActor
{
	GENERATED_BODY()
    //...
    
public:
	virtual void InteractWithPlayer(FCallbackVoidWithNoArg& Callback);
}

- NPC.cpp

void ANPC::InteractWithPlayer(FCallbackVoidWithNoArg& Callback)
{
	// TODO : callback function
	UE_LOG(LogTemp, Warning, TEXT("Dialogue : %s"), *Dialogue);
	Callback.ExecuteIfBound();
}

 

- Player.cpp

	FCallbackVoidWithNoArg Callback;
	Callback.BindUObject(this, &ARPGPlayer::AfterInteractionWithNpc);
	TracingNpc->InteractWithPlayer(Callback);

 

반응형