Unity3D:如何控制生成器,在等待wave完成时不停止实例化

时间:2018-08-20 20:47:01

标签: c# unity3d instantiation

Unity3D 2018.2.4 C#

在此生成程序代码中,它不断实例化。我如何停止实例化生成,直到销毁所有生成的敌人。

我正在检查

FileReader reader = new FileReader("pom.xml")
when(mockReader.read(reader)).thenReturn(mockModel);
Model model = mockReader.read(reader);

因为我要计算所有被消灭的敌人,并且使波生成器乘以敌人的StartAmount BUT多少倍,所以即使我将波转发置于if语句中,代码也会继续实例化。

我如何在停止生成器实例化之前增加一个限制,直到该波浪/回合的计数被破坏并能够移至下一个波浪/回合?

这是我到目前为止的代码

if (destroyedEnemyCounter == enemyStartAmount)

2 个答案:

答案 0 :(得分:2)

检查后

if (destroyedEnemyCounter == enemyStartAmount)

循环将再次开始,再次产生enemyStartAmount

您可以做的是在生成逻辑周围添加一个条件,例如在bool readyForNextWave内有一个true设置为if (destroyedEnemyCounter == enemyStartAmount)

if(readyForNextWave)
{
    readyForNextWave = false;
    for (int i = 0; i < enemyStartAmount; i++)
    {
        //  Each Wave is a different way
        // ...
        yield return new WaitForSeconds(spawnWait);
    }
}

// ...

if (destroyedEnemyCounter == enemyStartAmount)
{
    readyForNextWave = true;
    Debug.Log("Next Wave Incoming");
    // ...
}

答案 1 :(得分:2)

替换

if (destroyedEnemyCounter == enemyStartAmount)

使用

yield return new WaitUntil(() => destroyedEnemyCounter == enemyStartAmount);