Android应用程序暂停后重新加载资产

时间:2018-01-12 14:16:13

标签: android libgdx asset-management

根据这个libgdx wiki页面https://github.com/libgdx/libgdx/wiki/Managing-your-assets在应用程序暂停后需要重新加载像Textures这样的OpenGL资源。

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

我在使用assetManager时显示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();
    }
}

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

1 个答案:

答案 0 :(得分:1)

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

如果你将纹理放在onPause或onStop方法上,你应该重新加载它们。