使用の前提条件 (重要!)
Unity バージョンがバージョン 2021.1 以降に更新されました
使用
Unity China 公式ツイートhttps://mp.weixin.qq.com/s?__biz=MzkyMTM5Mjg3NQ==&mid=2247548583&idx=1&sn=75b7cda6fecc03f6691bf48a214fb835&chksm=c1863d23f6f1b435799cabdab20 7db41 f43f17620c085e34417d6d7f7222a114772567237494&scene=126&sessionid=1684999278 #rd Unity 公式チュートリアルhttps://learn.u3d。 cn/チュートリアル/hi-objectpool
名前空間
using UnityEngine.Pool;
作成
private ObjectPool<GameObject> testPool;
初期化
testPool = new ObjectPool<GameObject>(
() => {
// 第一个 createFunc 它将会在创建新对象的时侯调用,这里实例化一个随机预制体。
var testObject = Instantiate(prefab, transform);
// 最后,返回创建好的对象。
return testObject;
},
(go) => {
// actionOnGet
// 会在通过池子获取对象的时候调用,在这里把它激活,
go.SetActive(true);
},
(go) => {
// actionOnRelease
// 也就是对象放回池子里的时候会调用的回调,这里我们把需要放回池中的对象失活
go.SetActive(false);
},
(go)=>{
Destroy(go);
});
上から下に次のとおりです。
オブジェクト作成メソッドの実装は、このオブジェクト プールにどのような種類のオブジェクトが生成されるか、およびオブジェクト生成時にどのような操作が実行されるかを示します。
オブジェクトを取得するメソッドの実装。オブジェクトが取得されたときに呼び出されます。
オブジェクトをプールに戻すメソッドの実装は、オブジェクトがオブジェクト プールに戻されると同時にこのメソッドを呼び出します。
オブジェクトの破棄実装は、オブジェクトが完全に破棄されると自動的に呼び出されます。
また、書き込まれていないパラメータには、collectionCheck が含まれます。これは、主に、既にリサイクルされたオブジェクトの繰り返しリサイクルを防ぐためのセキュリティ チェックを目的としており、デフォルトで有効にしておくことができます。defaultCapacity は、プールの初期デフォルト サイズです。maxSize はプールの最大サイズです。
要約する
Unityが提供するオブジェクトプールAPIにより、ゲームに必要なオブジェクトプールをより迅速にデプロイでき、ある程度の拡張性も備えています。