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 方法,您应该重新加载它们。
根据此 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 方法,您应该重新加载它们。