以前の「ObjectPoolの勉強」で実験したオブジェクトプールを実装してみた。
最初は自機に実装してみたが、ボスの弾のプールも作るにあたって、プールをあちこちに作るより、いっそ、弾管理用のBullet Managerを作成して、プールもまとめてみたくなった。
Bullet Managerを空オブジェクトで作成し、弾のPrefabにBullet Managerをアタッチしようとするが、これがどうしてもできなかった。
ヒエラルキーに生成した後のオブジェクトにはアタッチできるが、それをPrefab化した時点でBullet Managerがアタッチから外れてしまう。
調べてみると、Prefabとヒエラルキー上のオブジェクトは存在するシーンが異なるため、関連づけが切れてしまうらしい。
・・・これは困った。
Bullet ManagerをPrefab化すればアタッチしたまま弾をPrefab化できるが、それだとアタッチされているBullet ManagerはPrefabフォルダ上のもので、ヒエラルキーに存在するBullet Managerとは別物で、正常に作動しない。
色々と試してみたが、とりあえず、弾をPrefab化せず、ヒエラルキー上に生成して、非activeで待機させておき、
そのオブジェクトが必要なときは、その待機オブジェクトをコピーして生成する方法でならうまくいった。
うまくいったから、いいんだけど、どうにも腑に落ちない。
さらに調べていると、次の様な記事が見つかった。
明日は、この記事にある「1.<メソッドの引数を活用する> 」を実験してみることにしよう。