一、对象池物体
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); } }