我在我的Unity游戏中遇到了与我的敌人列表有关的问题,如果一个组为空,它仍将通过for循环运行,导致缺少引用异常,引用了“enemyGroupList [i] [j] ] .enabled = true;'在错误中排队并且不生成新组。我认为它并没有删除空列表,但我似乎无法弄清楚它为什么不是。
在我将for循环作为
之前,我没有遇到过这个问题for(int j = enemyGroupList.Count - 1; i>=0; i--)
这是一个超出范围异常的争论,并不是我需要的东西,但它会正确更新组并在需要时产生一个新组。
void Update () {
if(enemyGroupList.Count < groupNumber)
{
enemyGroupList.Add(createGroup());
}
// for each list in the group list
for(int i = enemyGroupList.Count - 1; i >= 0; i--)
{
// for each opject in a given list
for (int j = enemyGroupList[i].Count - 1; j >= 0; j--)
{
// pause and unpause enemies when the player pauses the game or is talking
if (player.CurrState == PlayerScript.State.Paused || player.CurrState == PlayerScript.State.Talking)
{
enemyGroupList[i][j].enabled = false;
}
else
{
enemyGroupList[i][j].enabled = true;
}
// remove dead enemies
if (enemyGroupList[i][j].Dead)
{
enemyGroupList[i].RemoveAt(j);
// break avoids out of range exceptions
}
}
if (enemyGroupList[i].Count == 0 || player.CurrState == PlayerScript.State.Win)
{
enemyGroupList.RemoveAt(i);
}
}
}
由于