我在一个游戏画面中使用~100个纹理,所以我认为在实际游戏开始之前加载它们是可以的。游戏创建:
@Override
public void create() {
batch = new SpriteBatch();
camera = new OrthographicCamera();
camera.setToOrtho(false);
assetManager = new AssetManager();
Texture.setAssetManager(assetManger());
Gdx.app.debug(TAG, "textures load started at: " + TimeUtils.nanoTime());
assetManager.load(cardBackSidePath, Texture.class);
assetManager.load(backgroundPath, Texture.class);
for (String texturePath : cards) {
assetManager.load(texturePath, Texture.class);
}
assetManager.finishLoadingAsset(backgroundPath);
setScreen(new LoadingScreen(this));
}
现在,LoadingScreen是存根屏幕。在render()方法中,我检查AssetManager是否加载了所有需要的纹理,然后交换屏幕:
@Override
public void render() {
if (!PlayScreen.class.equals(getScreen().getClass()) && assetManager.update()) {
Gdx.app.debug(TAG, "textures loaded at: " + TimeUtils.nanoTime());
setScreen(new PlayScreen(this, cardBackSidePath));
}
final Texture backgroundTexture = assetManager.get(backgroundPath, Texture.class);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(backgroundTexture, 0, 0, camera.viewportWidth, camera.viewportHeight);
super.render();
batch.end();
}
但是在加载纹理一段时间之后,它只是默默地完成而没有提供任何日志消息。在Android上测试过。纹理是1024x2048 png所以这可能是一个真正的问题。但有没有办法得到确切的错误信息?