我有一个没有/不能使用“载入画面”的游戏。我在使用AssetManager
在广告显示后动态加载资源或IAP流程发生时遇到了一些麻烦 - 基本上只要OpenGL上下文发生变化。
我已经关注了AssetManager上的wiki文章,但每当我尝试加载“新”纹理时,我仍然会看到黑色纹理。
我有一个Singleton
自定义GameAssetManager
,它有一些方便的方法可以委托给LibGDX的AssetManager
。
例如:
public Texture getTexture(String filename) {
if (assets.isLoaded(filename)) {
return assets.get(filename, Texture.class);
} else {
assets.load(filename, Texture.class);
assets.finishLoadingAsset(filename);
Texture texture = assets.get(filename, Texture.class);
sessionAssets.put(filename, texture);
return texture;
}
}
在我的AndroidLauncher
中,我覆盖了onResume
方法,如下所示:
@Override
protected void onResume() {
super.onResume();
GameAssetManager.instance.resume();
}
GameAssetManager.resume()
方法只是这样做:
public void resume() {
assets = new AssetManager();
Texture.setAssetManager(assets);
}
我有StoreItemButton
Group
,当通过Google的IAB库或广告展示购买商品时,会更改其布局/ ui组件。
广告显示后,或者IAB流程完成AndroidLauncher.onResume
被调用,当按钮更改它的UI时,它或部分只是变黑。
如果我经历并预先加载所有可能的布局 - 每个按钮最多4个(最多30个按钮),然后根据情况显示/隐藏它们,它似乎工作,但这是很多没有充分理由的开销和错误。
非常感谢任何帮助。