0

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

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

每当我需要使用assetManager.get() 显示splashScreen 时,我都会使用assetManager 加载所有资产

这是我从一开始的代码:

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();
    }
}

我的问题:我应该打电话给manager.update()每个Screen.resume()人吗?

4

1 回答 1

1

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

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

于 2018-01-12T14:22:10.737 回答