UE4 SpawnActorDeferredについて
環境
UE4.19.0
Visual Studio Community 2015
SpawnActorについて
SpawnActorを呼び出すにはWorld, 生成位置、回転情報、名前や所有者の登録等のオプションが必要になります。
#include "Engine/World.h" #include "ExampleActor.h" void AExampleGameMode::BeginPlay() { Super::BeginPlay(); auto const World = GetWorld(); const FTransform SpawnTransform = FTransform::Identity; FActorSpawnParameters parameters; auto const exampleActor = World->SpawnActor<AExampleActor>(AExampleActor::StaticClass(), SpawnTransform, parameters); }
基本的にはこれで問題ないのですが
BeginPlayが呼び出される前に処理を行いたい場合や値を渡したいという場合もあります。
そんな場合に役立つのがSpawnActorDeferredです。
SpawnActorDeferredについて
一先ずコードから見ていきましょう。
#include "Engine/World.h" #include "ExampleActor.h" void AExampleGameMode::BeginPlay() { Super::BeginPlay(); auto const World = GetWorld(); const FTransform SpawnTransform = FTransform::Identity; auto const exampleActor = World->SpawnActorDeferred<AExampleActor>(AExampleActor::StaticClass(), SpawnTransform); // BeginPlayが呼び出される前に処理したい初期化処理等 exampleActor->Initialize(); // ここでBeginPlayが呼び出される exampleActor->FinishSpawning(SpawnTransform); }
SpawnActorDeferredを利用する機会は何かしら作っていると何度も出てきます。
頭の片隅に入れておくと便利です。