ほげたつブログ

Unreal Engine 4 を使ってなんかやります

UE4でPawnをSpawnActorする際のController生成タイミングに注意

第5回UE4ぷちコン、お疲れ様でした。

historia.co.jp


前回に引き続き、自分も参加しました。

www.youtube.com


今回はこのぷちコン作品を作る際に少しハマった件について書きます。

PawnのBeginPlay内で自信のControllerを参照するのは危険

今回の作品ではUnityちゃんのAIにBehaviorTreeを使用していて、BeginPlayからStartAIを呼び、その中でRunBehaviorTreeを呼んでいます。

f:id:hogetatu:20160502233947p:plain

ところがこのように記述してレベル開始時に大量にSpawnした時、Spawn後にその場に立ち止まったままのUnityちゃんがいる ことに気が付きました。
こちらを調べてみたところ、どうも GetControllerの戻り値がNoneになっていることがある ようです。
考えてみると確かにPawnとControllerは別Actorであるため、生成順序に関しては保証されていない のでしょう。

今回は以下の様に失敗時に時間を置いてリトライする仕組みを用意して対応しています。

f:id:hogetatu:20160503000432p:plain


BeginPlay内にてGetControllerする際には生成タイミングに注意しましょう。
現場からは以上です。