프로그래밍/언리얼엔진

언리얼엔진 4 C++강좌 007 [actor-07] 액터에서 이벤트 발생시키기

panpro 2023. 11. 12. 20:12

 

내가 만든 actor인 LampActor에 이벤트를 추가합니다.
그리고 레벨 블루프린트와 연결되는 ScriptActor를 만들어서 LampActor에서 발생하는 이벤트를 LevelScript Actor에서 받아 처리하는 방법을 설명합니다.

 

// LampActor.h

DECLARE_EVENT(ALampActor, FLightSetEvent)

 

// LampActor.h

public:
	FLightSetEvent& OnLigthSet()
	{
		return lightSetEvent;
	}

private:
	FLightSetEvent lightSetEvent;

 

램프 액터의 헤더 파일에 위와 같이 이벤트를 선언합니다.

 

// LampActor.cpp

lightSetEvent.Broadcast();

 

위 코드로 이벤트를 발생시킵니다.

 

// MyLevelScriptActor.cpp

void AMyLevelScriptActor::BeginPlay()
{
	Super::BeginPlay();

	//m_pActor->SetLight(true);
	m_pActor->OnLigthSet().AddUObject(this, &AMyLevelScriptActor::OnLightSetHandler);
}

void AMyLevelScriptActor::OnLightSetHandler()
{
	UE_LOG(LogTemp, Warning, TEXT("in OnLightSetHandler Handler !!"));
}

 

그리고 레벨블루프린트에 연결되는 MyLevelScriptActor를 만들어 램프 액터에서 발생하는 이벤트를 받아 처리합니다.

 

 

이렇게 하기 위해 레벨블루프린트에서 부모 클래스로 우리가 만든 MyLevelScriptActor 클래스를 설정해 줍니다.

 

이제 램프 액터에서 이벤트가 발생하면 그 이벤트를 MyLevelScriptActor에서 받아 로그를 보여줍니다. (OnLightSetHandler())