我试图了解对象池。我可以使脚本一次提取一个对象,但是我需要能够一次从列表中提取三个或更多对象。
我的对象池脚本很大,因此除非有必要,否则我真的不想共享整个东西。
我需要能够更改火焰生成的位置,因此我创建了一个脚本来做到这一点:
private void CreateWavesForFlames(GameObject flame, float xBase, float xDisplacement, float dropHeight)
{
flame.transform.position = new Vector3(xBase + xDisplacement, dropHeight, 0);
flame.SetActive(true); //this turn the pooled object on
}
所以我需要同时产生三个火焰并改变它们的产生位置
Wave调用看起来像这样:
void Wave1() {
Debug.Log("Wave1");
tempGOHolder = gm.GetLargeFire();
CreateWavesForFlames(tempGOHolder, 0, 0, 12);
CreateWavesForFlames(tempGOHolder, 10, 0, 12);
CreateWavesForFlames(tempGOHolder, 15, 0, 12);
}
发生的只有一个火焰,它使用了最后一个CreatWavesForFlames。我需要三个不同。
关于如何执行此操作的任何建议都很棒。
最佳答案
嗯..这就是您的代码所期望的。如果您想要3个不同的Flame对象,那么您将必须执行此操作(假设“ gm”是您的池管理器对象):
tempGOHolder = gm.GetLargeFire();
CreateWavesForFlames(tempGOHolder, 0, 0, 12);
tempGOHolder = gm.GetLargeFire();
CreateWavesForFlames(tempGOHolder, 10, 0, 12);
tempGOHolder = gm.GetLargeFire();
CreateWavesForFlames(tempGOHolder, 15, 0, 12);