【发布时间】:2013-09-03 11:07:23
【问题描述】:
我现在正在编写拾音器(硬币等),但是当你捡起东西时......它不再躺在地上了。
但我遇到了一个例外:System.InvalidOperationException。由map.Remove()引起,由foreach循环抛出。
那么,如何从列表中正确删除取件?
foreach (CollisionTiles tile in map.CollissionTiles)
{
if (!tile.isTransparant)
player.Collision(tile.Rectangle, map.Width, map.Height);
else
{
if (player.PickUp(tile, map.Width, map.Height))
map.Remove(tile);
}
camera.Update(player.Position, map.Width, map.Height);
}
map.Remove() 无效:
public void Remove(CollisionTiles tile)
{
this.collissionTiles.Remove(tile);
}
【问题讨论】:
-
在修改集合时,您不能使用
foreach遍历集合。将for与索引器一起使用,从最大的索引开始向下 -
顺便说一句 - 您真的要更新相机为每个图块,而不是在循环完成后更新一次?
-
@ReedCopsey 我知道。我做得很快,你知道会发生什么...
标签: c#