Unity 对象池


发表于 修改于 Code 86 字 几秒

创建对象池

public ObjectPool<GameObject> pool; //对象池
private void Awake()
{
pool = new ObjectPool<GameObject>(
createFunc: () =>
{
GameObject obj = Instantiate(Prefab);
obj.transform.SetParent(transform, false);
return obj;
},
actionOnGet: (obj) => obj.SetActive(true),
actionOnRelease: (obj) => obj.SetActive(false),
actionOnDestroy: (obj) => Destroy(obj),
true, 10, 1000);
}

获取对象

GameObject obj = pool.Get();

释放对象

pool.Release(obj);

销毁对象池

pool.Destroy();
//或者
pool = null;