最近一直在找工作,最近快要过年工作难找啊,加上本身又是个应届的小白,诶。最近面试做题的时候碰到,有几个图片需要随机出现,需要写一个对象池,当时写的一个简单的对象池,如果有写的不对的地方请大家多指点
对象池服务可以减少从头创建每个对象的系统开销。在激活对象时,它从池中提取。在停用对象时,它放回池中,等待下一个请求。
private List<GameObject> objList;
//储存对象的父物体
private Transform poolTrans;
//从池中取得,不存在则创建
public GameObject GetGameObject(string name)
{
GameObject go;
foreach (var obj in objList)
{
if (name== obj .name)
{
go = obj ;
objList.Remove(obj );
go.SetActive(true);
Debug.Log("DXCCCCCCCCC");
return go;
}
}
Debug.Log("NNNNNNNNNNN");
go = GameObject.Instantiate(Resources.Load("name") as GameObject);
return go;
}
//放回池
public void PutGameObject(GameObject obj)
{
objList.Add(obj);
obj.transform.parent = poolTrans;
obj.SetActive(false);
}
当时做的时候达到了基本要求,但还有许多可以改善的地方,比如对象的类型,然后从对象池获取对象时的坐标位置缩放,池的大小限制等。
最后贴一个Unity大中华区刘钢的一个项目架构设计与开发管理的讲座视频 https://v.qq.com/x/page/d016340mkcu.html