我正在使用 C# 的 XNA 库开发一个简单的游戏。在下面的代码片段中,我得到了
收藏已修改;枚举操作可能无法执行。
第二个 foreach 循环顶部的错误。在我(相对有限的)C# 经验中,尝试在循环期间修改基础集合时会发生这种情况。但是,据我所知,我并没有以任何方式修改enemy_positions 集合。这段代码中的所有集合都是类型List<Vector2>
。
这里发生了什么?
//defines collision behaviour when enemy is hit
int be_no = 0;
List<Vector2> tmp_bullets = bullet_i_position;
List<Vector2> tmp_enemy = enemy_positions;
foreach (Vector2 bullet in bullet_i_position)
{
//get bullet collision box
Rectangle bullet_col = new Rectangle(Convert.ToInt32(bullet.X - 12), Convert.ToInt32(bullet.Y - 12), 25, 26);
int en_no = 0;
foreach (Vector2 enemy in enemy_positions)
{
//get enemy collsion box
en_box = new Rectangle(Convert.ToInt32(enemy.X), Convert.ToInt32(enemy.Y), 75, 75);
if (temp_r.Intersects(en_box))
{
//remove all colliding elements
tmp_enemy.RemoveAt(en_no);
tmp_bullets.RemoveAt(be_no);
bullet_direction.RemoveAt(be_no);
}
en_no++;
}
be_no++;
}
//update actual lists
bullet_i_position = tmp_bullets;
enemy_positions = tmp_enemy;