在最开始做游戏的过程中,一些重复生产的东西,我们可以将这些物体以池的方式存储,需要的时候将它调为激活状态,不需要的时候将它调整为未激活状态,以打到资源的有效利用。(以前我往往只是需要的时候产生,不需要的时候将它销毁)
不过我建议池的创建放在单例中
如以下
//创建子弹池
private List<GameObject> bulletList;
//初始化子弹池
void Start()
{
if (instance == null)
instance = this;
// 创建管理容器
bulletList = new List<GameObject>();
}
//子弹池管理
public GameObject MakeBullet(Vector3 pos)
{
GameObject go = null;
if(bulletList.Count!=0)
{
go = bulletList[0];
go.SetActive(true);
go.transform.position = pos;
bulletList.RemoveAt(0);
}
else
{
go = Instantiate(bulletPre, pos, Quaternion.identity);
}
return go;
}
public void FreeBullet(GameObject go)
{
bulletList.Add(go);
go.SetActive(false);
}
需要的是后只需要调用单例中的MakeBullect();传递给他相关的位置信息,他自会创建,需要摧毁的时候将它FreeBullect()释放掉即可。
//y一定要先初始化池