我使用AssetManager
加载游戏中的所有资产。我在显示加载进度方面有问题,或者相反,我试图在LoadingScreen渲染方法中使用此代码仅设置背景颜色。
Gdx.gl.glClearColor(0.431f, 0.792f, 0.808f, 0xff / 255.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Everiting加载很好,但在加载时,我得到了黑色屏幕,而不是glClearColor中的颜色设置。在实现加载条时也发生了同样的情况,比如这个例子
这里是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);
}
}
在这里,我期望加载资产时显示浅蓝色的空屏幕,但我得到了黑屏。
我想有些代码阻塞了主线程,但我不知道如何修复它。
感谢的帮助
确保您知道何时调用Screen.show()
和Screen.render(float delta)
:
Screen.show()
:在调用Game.setScreen()
时调用。
Screen.render(float delta)
:在Screen.show()
结束后被连续调用。因此,在加载期间CCD_ 10尚未完成,并且显示默认背景(黑色)。
为了避免这种情况,单独的线程会很好。AssetManager
以异步方式加载内容。现在我们只能正确使用它:
在呼叫Game.setScreen(<Loading Screen>)
之前,先呼叫AssetManager.load(<your assets>)
。然后直接调用LoadingScreen.render(float delta)
,您可以看到自己的背景。要检查加载是否完成,可以使用AssetManager.update()
,如果完成则返回true,否则返回false。