在一般fps类的游戏开发中,子弹和敌人类型的需要无限生成与销毁的对象,可以使用对象池来优化游戏,节省资源
public class ObsPool:MonoBehaviour
{
/*单例模式,用来调用对象池*/
public static ObsPool instance;
/*储存对象数组*/
public List<GameObject> Pipes;
/*生成对象个数*/
public int PipeAmount;
/*要生成对象的预制件*/
public GameObject Pipe;
/*贪心算法参数*/
int SuoYin = 0;
void Start () {
if (instance==null)
{
instance = this;
}
/*将数组new出来*/
Pipes = new List<GameObject>();
/*孵化过程*/
for (int i = 0; i < PipeAmount; i++)
{
GameObject PIPE = Instantiate(Pipe);
PIPE.SetActive(false);
/*生成对象放在固定位置子类*/
PIPE.transform.SetParent(this.transform);
/*生成对象存入数组*/
Pipes.Add(PIPE);
}
}
/*获得对象方法*/
public GameObject GetPipe()
{
for (int i = 0; i < PipeAmount; i++)
{
int item = (SuoYin + i) % PipeAmount;
if (!Pipes[item].activeInHierarchy)
{
SuoYin = (item + 1) % PipeAmount;
return Pipes[item];
}
}
return null;
}
}