using UnityEngine.Poolな件

早速、ゲーム開発をしている。

今回は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を使い出していてオブジェクトプールがないらしい

以上