Actor는 생성 → 초기화 → 실행 → 제거 단계를 거친다.
이 과정에서 언리얼 엔진은 특정 함수를 호출하며, 이를 활용해서 Actor의 상태와 동작을 정의할 수 있다.
(1) 생성자 (Constructor)
CreateDefaultSubobject)과 기본값 설정에 사용한다.AActor::AActor()
{
// Tick 활성화 여부 설정
PrimaryActorTick.bCanEverTick = true;
// Scene Root 컴포넌트 생성
SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
// Static Mesh 컴포넌트 생성
StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
StaticMeshComp->SetupAttachment(SceneRoot);
}
(2) PostInitializeComponents()
virtual void PostInitializeComponents() override;
void AMyActor::PostInitializeComponents()
{
Super::PostInitializeComponents();
UE_LOG(LogTemp, Warning, TEXT("Components initialized!"));
}
(1) OnConstruction(const FTransform& Transform)
virtual void OnConstruction(const FTransform& Transform) override;
void AMyActor::OnConstruction(const FTransform& Transform)
{
Super::OnConstruction(Transform);
UE_LOG(LogTemp, Warning, TEXT("Actor placed or modified in editor!"));
}
(2) BeginPlay()
virtual void BeginPlay() override;
void AMyActor::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Warning, TEXT("Actor has entered the game world!"));
}
Tick(float DeltaTime)
virtual void Tick(float DeltaTime) override;
void AMyActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
UE_LOG(LogTemp, Log, TEXT("Actor is updating every frame!"));
}
(1) EndPlay(const EEndPlayReason::Type EndPlayReason)
EEndPlayReason으로 전달된다.virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
void AMyActor::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
UE_LOG(LogTemp, Warning, TEXT("Actor has been removed from the world."));
}
(2) Destroyed()
Destroy()가 호출되어 Actor가 완전히 파괴되기 직전에 호출된다.virtual void Destroyed() override;
void AMyActor::Destroyed()
{
Super::Destroyed();
UE_LOG(LogTemp, Error, TEXT("Actor is being destroyed!"));
}
AActor::AActor())