我试图阻止在玩家死亡时产生的波浪,但我似乎无法阻止这种协同作用。我真的不知道如何攻击这一点了,因为添加if语句和中断不起作用。我如何打电话给StopCoroutine,让例行停车?我需要介绍新的方法吗?
void Start () {
gameOver = false;
StartCoroutine (SpawnWaves());
}
void Update()
{
if (gameOver)
{
StopCoroutine(SpawnWaves());
}
}
IEnumerator SpawnWaves()
{
yield return new WaitForSeconds(startWait);
while (true)
{
for (int i = 0; i < hazardCount; i++)
{
GameObject enemy = enemies[Random.Range(0, enemies.Length)];
Instantiate(enemy, spawnPosition1, spawnRotation1);
Instantiate(enemy, spawnPosition2, spawnRotation2);
Instantiate(enemy, spawnPosition3, spawnRotation3);
Instantiate(enemy, spawnPosition4, spawnRotation4);
Instantiate(enemy, spawnPosition5, spawnRotation5);
Instantiate(enemy, spawnPosition6, spawnRotation6);
yield return new WaitForSeconds(spawnWait);
}
yield return new WaitForSeconds(waveWait);
enemies[0].GetComponent<EnemyBehviour>().currentHealth *= enemyHealthMultiplier;
}
}发布于 2019-03-31 15:20:54
例如,在while循环中设置gameOver = true当currentHealth == 0并设置while(gameOver == false)
发布于 2019-03-31 15:29:29
完全修复多亏了@AlexG的指导
void Start () {
gameOver = false;
StartCoroutine (SpawnWaves());
}
IEnumerator SpawnWaves()
{
yield return new WaitForSeconds(startWait);
while (gameOver != true)
{
for (int i = 0; i < hazardCount; i++)
{
if(gameOver)break;
GameObject enemy = enemies[Random.Range(0, enemies.Length)];
Instantiate(enemy, spawnPosition1, spawnRotation1);
Instantiate(enemy, spawnPosition2, spawnRotation2);
Instantiate(enemy, spawnPosition3, spawnRotation3);
Instantiate(enemy, spawnPosition4, spawnRotation4);
Instantiate(enemy, spawnPosition5, spawnRotation5);
Instantiate(enemy, spawnPosition6, spawnRotation6);
yield return new WaitForSeconds(spawnWait);
}
yield return new WaitForSeconds(waveWait);
enemies[0].GetComponent<EnemyBehviour>().currentHealth *= eenter code herenemyHealthMultiplier;
}
}发布于 2019-03-31 15:53:28
ryeMoss实际上有正确的答案。您不需要更改while循环的条件,而是需要确保将引用值传递给StopCoroutine方法。您可以在文档中看到,这正是他们正在做的事情。
问题是,当SpawnWaves被调用时,它返回一个新的IEnumerator,这显然不是您在试图阻止它时想要的,哈哈。
只需在Start方法中更改为
gameOver = false;
waves = SpawnWaves(); <-- or whatever you want to call it
StartCoroutine(waves); <-- using a reference然后将waves传递给StopCoroutine。
一定要仔细阅读文档;在学习新的库、框架等时,它们是您最好的朋友:)
https://stackoverflow.com/questions/55442254
复制相似问题