UE4는 액터를 스폰하는 방식이 두가지로 나뉜다.
첫 번째는 즉시 스폰 시키는 SpawnActor를 사용하는 방법
두 번째는 액터에 필요한 초기화를 선행한 후 BeginPlay로 넘길 수 있는 DeferredActorSpawn 함수를 사용하는 방법이 있다.
두 함수의 차이점은, SpawnActor를 수행하면 바로 Actor의 Construction과 PostActorConstruction이 수행되지만
DeferredActorSpawn을 사용하는 경우, 액터에 추가적으로 필요한 초기화 과정을 수행한 이후 'FinishSpawning'함수를 호출해 임의로 생성자 호출 순서를 조정할 수 있다.
DeferredActorSpawn 내부를 보면 아래와 같이 생성자를 호출하고 있다.
{
FEditorScriptExecutionGuard ScriptGuard;
ExecuteConstruction(FinalRootComponentTransform, nullptr, InstanceDataCache, bIsDefaultTransform);
}
{
SCOPE_CYCLE_COUNTER(STAT_PostActorConstruction);
PostActorConstruction();
}
Actor 클래스 내에는 Replicate와 같이 bActorInitialize가 활성화 된 이후에 설정해야만 적용되는 변수나 함수가 있기에,
초기화 사이클을 숙지하고 DeferredActorSpawn을 사용해야 한다.