쾌락없는 책임 (공부)/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);
반응형