Android 分离sprite和Engine的所有实例

Android 分离sprite和Engine的所有实例,android,andengine,sprite,Android,Andengine,Sprite,我正在使用具有多个关卡的AndEngine构建一个坦克游戏,但我没有使用多个场景,我坚持使用1个主游戏场景,当用户超过关卡时,该场景应该重置并修改自身 我能够成功地修改场景,但是我在移除敌人方面遇到了问题。有多个敌人精灵的实例,用户必须杀死,但当用户成功完成要求提高一个级别(杀死x个敌人)时,敌人不会重置;上一级别的实例尚未从屏幕中删除 因此,当用户处于级别2时,可能仍然有3或4个在级别1周围漫游的敌人,用户不需要杀死这些敌人 我尝试使用detachChild将敌人从屏幕上移除,并使用attac

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

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

因此,当用户处于级别2时,可能仍然有3或4个在级别1周围漫游的敌人,用户不需要杀死这些敌人

我尝试使用detachChild将敌人从屏幕上移除,并使用attachChild立即将其添加回屏幕,但当下一个关卡开始时,敌人不会繁殖


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

当你开始游戏时,你必须创建不同的层(实体),如gameLayer, 背景层,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();
    }
publicstaticvoidremovesprites(列表精灵列表,IEntity场景){
对于(int i=spriteList.size()-1;i>=0;i--){
最终精灵精灵=精灵列表.get(i);
场景:孩子(精灵);
删除(i);
}
spriteList=null;
gc();
}

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

好吧,尝试使用以下方法:
sprite.detachchildren()