参考サイト様
https://coacoa.net/unity_explain/unity_objectpool2/ https://www.karvan1230.com/entry/2022/06/21/212832
オブジェクトプールでは以下のプロパティが使用できる。
xxx.Get() オブジェクトプールからオブジェクトを借りてくる。
xxx.Release() オブジェクトをオブジェクトプールに返す。
xxxはオブジェクトプールの変数名。 使い方 まずusing UnityEngine.Pool;を追加して、オブジェクトプール機能を使えるようにしておく。 次にオブジェクトプール本体になる変数を宣言する。 ObjectPool<GameObject> objpool; そして、オブジェクトプールを作成する。
objpool = new ObjectPool<GameObject>(
CreatePoolObj, ← 第一引数:プールにオブジェクトがない場合、オブジェクトを作成するメソッドを宣言する。
GetFromPool, ← 第二引数:.Get()が使用された時に、同時に実行されるメソッドを宣言する。
ReturnToPool, ← 第三引数:Release()が使用された時に、同時に実行されるメソッドを宣言する。
DestroyPoolObject, ← 第四引数:プールの許容量を超えた場合のメソッドの宣言。対象オブジェクトを破壊するなど。
false, ← 第五引数
2, ← 第六引数:プールの初期容量
10); ← 第七引数:プールの最大許容量
弾のオブジェクトプールを作って、その弾を撃つ場合、
GameObject XX = オブジェクトプール変数.Get() として、プールからオブジェクトを借りてきて、 xx.transform.position = で 自機の発射口のpositionに設定する。 この時、「GetFromPool」の指定するメソッドで借りてくるオブジェクトをアクティブにしておくこと。
弾が破壊されたり、エリア外にでる場合は、 オブジェクトプール変数.Release(返却するオブジェクト)を使用する。 この時、「ReturnToPool」の指定するメソッドで返却するオブジェクトをディアクティブにしておくこと。