【发布时间】:2020-04-30 12:03:56
【问题描述】:
我知道这通常意味着某处存在无限循环,但是我已将其范围缩小到此 IEnumerator,因为当我删除它时,它可以正常工作,但会同时生成所有敌人。这个想法是它计算出该波需要多少敌人,然后每 0.5 秒产生 1 个敌人,直到达到该数量,而不是一次为该波产生所有敌人。
更新方法:
void Update()
{
Enemies = GameObject.FindGameObjectsWithTag("EndlessKnife");
NoOfEnemies = 0;
foreach (GameObject Enemy in Enemies)
{
NoOfEnemies++;
}
if (NoOfEnemies == 0)
{
waveNumber++;
StartingAmount = Mathf.RoundToInt(waveNumber + (Mathf.Pow(1.2f, waveNumber)));
for (int i = 0; i < StartingAmount;)
{
if (Limit == false)
{
SpawnEnemy();
i++;
Limit = true;
StartCoroutine(GradualSpawn());
}
}
}
}
IEnumerator:
IEnumerator GradualSpawn()
{
yield return new WaitForSeconds(0.5f);
Limit = false;
}
我使用相同的逻辑来限制我的武器的射速,所以不明白为什么它在这里崩溃,任何输入都是有帮助的:D
【问题讨论】:
-
你能添加堆栈跟踪吗?可能有助于查明问题出在哪里...
标签: c# unity3d game-development ienumerator