一、对象池物体
using UnityEngine;
public class PooledObject:MonoBehaviour{
pulbic ObjectPool Pool{get;set;}
public void ReturnToPool(){
if(Pool){
Pool.AddObject(this);
}else{
Destory(gameObject);
}
}
}如果不存在对象池,就销毁
要使用对象池管理时,就让物体继承PooledObject
二、对象池
public class ObjectPool:MonoBehaviour{
PooledObject prefab;
List<PooledObject> availableObjects = new List<PooledObject>();
public PooledObject GetObject(){
PooledObject obj;
int lastAvailableIndex = availableObjects.Count-1;
if(lastAvailableIndex >= 0){
obj = availableObjects[lastAvailableIndex];
availableObjects.RemoveAt(lastAvailableIndex);
obj.gameObject.SetActive(true);
}else{
obj = Instantiate<PooledObject>(prefab);
obj.transform.SetParent(transform,false);
obj.Pool = this;
}
return obj;
}
public void AddObject(PooledObject obj){
obj.gameObject.SetActive(false);
availableObjects.Add(obj);
}
}