我目前已经实现了该系统,当一个小兵死亡时,我将小兵的x位置设置为-100,从而将其移出屏幕。但是随着我添加更多的小兵,我意识到这会减慢我的Android游戏的速度。有没有更好的方法可以从游戏中完全删除该小兵?
下面的代码说明。每个爪牙都会在特定的时间间隔创建,然后添加到名为minionarray的数组列表中。从那里开始,检查minionarray中的每个奴才,以查看布尔isDead对于该特定奴才是否为true。如果为true,则开始miniondeath动画,并在结束时将minion设置为-100,从而将其从屏幕上移除。需要一种更好的方法来从游戏中完全删除该奴才。
PS-已解决。 Gil Moshayef的方法效果最好!谢谢大家!
for (Minions m : minionarray) {
m.update();
if (m.isDead() == true) {
m.setMinionSpriteCurrent(minDeath.getImage());
m.setSpeedX(0);
if (minDeath.getImage() == minDeath4) {
m.setCenterX(-100);
}
}
}
最佳答案
您应该将其从阵列中删除。
从以“每种”方式迭代的数组中删除项目有点问题,但是如果将其更改为普通的for循环,则可以这样进行:
Minion m;
for (int i = 0; i < minionArray.size(); i++) { // I'm assuming minionArray is a List type
m = minionArray.get(i);
m.update();
if (m.isDead() == true) {
minionArray.remove(i);
i--; // set the pointer back by 1 so you don't skip updating the next minion in the list.
}
}