【问题标题】:Reloading Assets after android app has been pausedandroid应用暂停后重新加载资产
【发布时间】:2018-01-12 14:16:12
【问题描述】:

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

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

【问题讨论】:

    标签: android libgdx asset-management


    【解决方案1】:

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

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

    【讨论】:

    • 应用从后台恢复时调用onResume方法。请查看 android 活动生命周期,看看这是否适合您的实施。
    • 我已经写了同样的东西,在这种情况下,你没有写任何本机代码。资产由 libgdx 框架管理
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多