public class Pool : MonoBehaviour
{
public static Pool _instance;
//存储创建出来的对象
[HideInInspector]
public List<GameObject> poolList = new List<GameObject>();
//需要创建对象个数
public int count;
//需要创建的对象
public GameObject obj;
private void Awake()
{
if (_instance != null)
return;
_instance = this;
}
/// <summary>
/// 将物体添加到对象池里
/// </summary>
public void AddInPoolList(GameObject obj)
{
if (poolList.Count > count)
return;
poolList.Add(obj);
}
/// <summary>
/// 从对象池里取出对象
/// </summary>
/// <returns></returns>
public GameObject GetInPoolList()
{
if (poolList.Count > 0)
{
GameObject go = poolList[0];
poolList.RemoveAt(0);
return go;
}
GameObject go1 = Instantiate(obj);
AddInPoolList(go1);
return go1;
}
/// <summary>
/// 回收对象
/// </summary>
/// <param name="obj"></param>
public void Recycle(GameObject obj)
{
obj.SetActive(false);
poolList.Add(obj);
}
}
Unity对象池简单实现
最新推荐文章于 2022-07-22 15:40:22 发布