0

我正在使用具有多个级别的 AndEngine 构建一个坦克游戏,但我没有使用多个场景,我坚持使用 1 个主游戏场景,当用户通过关卡时应该重置和修改自身。

我能够成功修改场景,但在移除敌人时遇到了问题。用户必须杀死多个敌人精灵实例,但是当用户成功完成升级要求(杀死x个敌人)时,敌人不会重置;上一个级别的实例尚未从屏幕上删除。

因此,当用户处于 2 级时,可能仍然有 3 或 4 个从 1 级漫游的敌人不需要用户杀死。

我尝试使用 detachChild 从屏幕上移除敌人并 attachChild 立即将它们添加回来,但是当下一个级别开始时,敌人不会产生。

如何在不影响生成的情况下移除当前在屏幕上的所有敌方精灵实例?

4

2 回答 2

1

当您开始游戏时,您必须创建不同的层(实体),例如游戏层、背景层、HUD 层......这样您就可以根据情况更新项目。此过程使您在关卡完成后顺利卸载资源。

满足您的要求...在创建时将每个精灵实例添加到数组列表中。删除所有这些如下

 public static void removeSprites(List<Sprite> spriteList, IEntity scene){
        for(int i = spriteList.size() - 1; i >= 0; i--) {
            final Sprite sprite = spriteList.get(i);
            scene.detachChild(sprite);
            spriteList.remove(i);
        }
        spriteList = null;
        System.gc();
    }

您还必须在游戏中卸载纹理图集

于 2013-08-19T13:09:24.893 回答
-1

好吧,尝试使用这种方法:sprite.detachchildren()

于 2017-04-25T06:23:32.663 回答