我目前已经实现了该系统,当一个小兵死亡时,我将小兵的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.
    }
}

07-26 03:21