每当我尝试删除我的一个实体时,游戏就会给我这个错误,我不知道为什么。
这是创建错误的方法:
public void render (Screen screen) {
int xTile = 11;
int yTile = 0;
int scale = 1;
screen.render (x, y, xTile + yTile * 32, colour, 0, scale);
if (level.player != null) {
int xd = level.player.x - x;
int yd = level.player.y - y;
if (xd * xd + yd * yd < 8 * 8) {
Font.render("Pick up", screen, x - 18, y - 17, Colours.get(-1, -1, -1, 555), 1);
if (item == true) {
Font.render("It's true!", screen, x - 18, y - 17, Colours.get(-1, -1, -1, 555), 1);
level.removeEntity(this);
}
}
}
}
这是removeEntity方法:
public void removeEntity(Entity entity) {
entities.remove(entity);
}
答案 0 :(得分:1)
我猜你的其余代码看起来像这样:
for (Entity e : level.entities) {
e.render();
}
这意味着某个地方,您在迭代level.entities.remove()
时调用entities
,这会产生ConcurrentModificationException
或CheckForComodificationError
。
更简单的解决方案之一是在迭代完成后,将一个单独的项目列表作为一个批处理操作删除:
level.queueRemoveEntity(this);
// .. finish rendering all entities ..
level.entities.removeAll(level.queuedEntities);
level.queuedEntities.clear();