我使用AssetManager
加载游戏中的所有资源。
我有显示加载进度的问题或改为进展我尝试在我的LoadingScreen渲染方法中使用此代码仅设置背景颜色。
Gdx.gl.glClearColor(0.431f, 0.792f, 0.808f, 0xff / 255.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Everiting加载得很好但是,在加载时我得到黑色屏幕而不是glClearColor中的颜色设置。实现像this示例
这样的加载栏时也会发生同样的情况这是Assests
类
public class Assets implements Disposable, AssetErrorListener {
public static final Assets instance = new Assets();
.
.
public void init (AssetManager assetManager) {
this.assetManager = assetManager;
// set asset manager error handler
assetManager.setErrorListener(this);
// load texture atlas
assetManager.load(Constants.TEXTURE_ATLAS_OBJECTS, TextureAtlas.class);
.
.
TextureAtlas atlas = assetManager.get(Constants.TEXTURE_ATLAS_OBJECTS);
.
}
.
}
以下是我LoadingScreen
的简单代码:
@Override
public void show() {
manager = new AssetManager();
Assets.instance.init(manager);
}
public void render(float deltaTime) {
Gdx.gl.glClearColor(0.431f, 0.792f, 0.808f, 0xff / 255.0f);//light blue
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (manager.update()) {
ScreenTransition transition = ScreenTransitionFade.init(0.5f);
game.setScreen(new HomeScreen(game), transition);
}
}
这里我预计在加载资产时会显示淡蓝色的空白屏幕,但是我得到了黑屏。
我猜有些代码会阻塞主线程,但我不知道如何解决这个问题。
感谢您的帮助
答案 0 :(得分:0)
确保您知道何时调用Screen.show()
和Screen.render(float delta)
:
Screen.show()
:在您拨打Game.setScreen()
时被呼叫。
Screen.render(float delta)
:在 Screen.show()
完成后连续调用。因此,在加载过程中Screen.show()
尚未完成,并显示默认背景(黑色)。
为了避免单独的线程会很好。这里有AssetManager
异步加载内容。现在我们只能正确使用它:
在致电AssetManager.load(<your assets>)
之前致电Game.setScreen(<Loading Screen>)
。然后直接调用LoadingScreen.render(float delta)
,您就会看到自己的背景。要检查加载是否完成,您可以使用AssetManager.update()
,如果已完成则返回true,否则返回false。