ConstructionScriptから別のアクターをスポーン出来ない
妹「……というわけで大きさを調べようとしたんだけど、ConstructionScriptからActorがスポーン出来なくて、スポーン出来ないとGetActorBoundsが使えないから大きさが測れないよ」
「そういえばそうだったかも」
「ということで、ConstructioScriptから別のアクターをSpawn出来ない」
妹「なんで出来ないの?」
「基本的にアクターのConstructionScriptって、それ自身についてのこと以外は書かない方がいい物なんだよ」
妹「それ自身というと……」
「例えば白いアクターだから白いマテリアルを設定するのはいいけど、他のアクターが白だから赤にするとかはよろしくない。Constructionはエディタに表示してるだけでも呼び出されるし、呼び出しのタイミングもまちまち。想定外のアクシデントの原因になる。他との関連性が必要な物は実際に動き出した後のBeginPlayあたりでやればいいと。それにさっきのまとめ記事にもあったけど、SpawnしてConstructionScriptを実行してるのに、そこでまたSpawnすると、ConstructionScriptの無限ループがありえる」
妹「でもChildActorコンポーネントは作れるんだから、無限ループは起こせるのでは? ChildにChildを作って孫たちを増やしていけば……」
「それがChildActorのConstructionScriptはちゃんと機能してないみたいで、上手く孫アクターが作れなかった。これが無限ループ対策かもしれない。他にもGetPlayer系のノードとかも使えない」
妹「そうすると大きさを調べる用のアクターはどうやって用意すればいいんだろう? やっぱりChildActorコンポーネント?」
「いったんChildActorとして作って、そこからアクターの情報を取り出して、GetActorBoundsするっていう方法なら出来そうだった」