android 应用暂停后重新加载资产

Reloading Assets after android app has been paused

根据此 libgdx 维基页面 https://github.com/libgdx/libgdx/wiki/Managing-your-assets OpenGL 资源(如纹理)需要在应用程序暂停后重新加载。

这是我管理 libgdx 应用资产的方法

我在显示 splashScreen 期间使用 assetManager 加载所有资产,只要我需要使用它们 assetManager.get()

从一开始就是我的代码:

public class GameMain extends Game {

    private AssetManager manager;

    @Override
    public void create() {
        manager = new AssetManager();
        setScreen(new splashScreen(this));
    }

    @Override
    public void render() {
        super.render();
    }

    @Override
    public void pause() {
        super.pause();
    }

    @Override
    public void resume() {
        super.resume();
    }

    @Override
    public void resize(int width, int height) {
        super.resize(width, height);
    }

    @Override
    public void dispose() {
        super.dispose();
        manager.dispose();
    }

    public AssetManager getAssetManager() {
        return manager;
    }
}

启动画面:

public class SplashScreen implements Screen {

    GameMain gameMain;

    public SplashScreen(GameMain gameMain) {
        this.gameMain = gameMain;
    }

    @Override
    public void show() {
        loadAssets();
    }

    public void loadAssets() {
        gameMain.getAssetManager().load("example.atlas", TextureAtlas.class);
        gameMain.getAssetManager().finishloading();
    }
}

我的问题: 我应该在每个 Screen.resume() 中调用 manager.update() 吗?

您的实施很好,您不需要 manager.update() 除非您异步加载资产。在这种情况下,您已经加载了资产。但始终使用 get 参数访问您的资产。

如果您处理纹理的 onPause 或 onStop 方法,您应该重新加载它们。