0

ゲームのレベルを切り替えるために GameScene を再作成しましたが、レベルを 3 ~ 4 回切り替えると、errno 12 メモリ不足エラーが発生します。どうにかしてシーン全体を削除し、バックグラウンドでの実行を停止できるようにする必要があります。メモリ不足にならないようにする方法はありますか?

編集:

これは、新しいシーンをロードする私の方法です。

public void loadGameScene(final Engine mEngine, final SharedPreferences sp, final String map) {
setScene(loadingScene);
ResourcesManager.getInstance().unloadMenuTextures();
mEngine.registerUpdateHandler(new TimerHandler(0.3f,
    new ITimerCallback() {
        public void onTimePassed(final TimerHandler pTimerHandler) {
        ResourcesManager.getInstance().unloadGameTextures();
        mEngine.unregisterUpdateHandler(pTimerHandler);
        ResourcesManager.getInstance().loadGameResources();
        GameScene gameScene = new GameScene();      
        gameScene.setSp(sp);
        gameScene.loadLevel(map);
        gameScene.loadMap(map);
        setScene(gameScene);
        }
    }));
}

ライン入れました

ResourcesManager.getInstance().unloadGameTextures()

しかし、問題は解決しません。

4

3 に答える 3

1

再作成する前に、Pre-Level のすべてのリソース (テクスチャ アトラス、スプライトなど) をアンロードする必要があります。物理演算を使用している場合は、スプライト用に作成したボディをアンロードする必要があります。すべてのオブジェクトがクリアされ、メモリが効率的になります。 .

于 2013-10-14T05:01:19.000 に答える