我试图了解对象池。我可以使脚本一次提取一个对象,但是我需要能够一次从列表中提取三个或更多对象。

我的对象池脚本很大,因此除非有必要,否则我真的不想共享整个东西。

我需要能够更改火焰生成的位置,因此我创建了一个脚本来做到这一点:

 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);

09-05 21:50