早速、ゲーム開発をしている。
今回はusing UnityEngine.Poolの話をする。
ブログ自体のタイトルにしているが「Unity6」でやっている。(次からの記事はわざわざ書かないようにしたい)
とりあえずコード
// プールを新規作成
var newPool = new ObjectPool<GameObject>(
createFunc: () => Instantiate(prefab),
actionOnGet: obj => obj.SetActive(true),
actionOnRelease: obj => obj.SetActive(false),
actionOnDestroy: obj => Destroy(obj),
maxSize: maxSize
);
メインとなるのはこのコード。
無名関数を使うととてもシンプルになる。
公式に書いてあるのだが、
https://docs.unity3d.com/ja/2021.2/ScriptReference/Pool.ObjectPool_1.html
GETとReleaseが標準publicで定義しているので、そのまま呼び出せる。
上のコードは私が四苦八苦検索して調べたものではなく、ChatGPTが書いたもの。
実際自分でビルドして思った通りの動作になればOKというスタイルだ。
他にも、シングルトンにする方法もChatGPTが教えてくれて実際のコードにはシングルトンで書いている。
あまり記事が長くなると書く私も読む方もしんどいので、ここで終わりにする。
言いたいことまとめ
1、ChatGPTが便利
2、オブジェクトプールは使うべき
3、マニュアルを読め
4、unirxではなくR3を使い出していてオブジェクトプールがないらしい
以上