我在libgdx中的AssetManager遇到问题,正在主类中创建它,并且有一个getMethod可以将assetManager返回到屏幕。当我进入屏幕类中的assetManager.get(etc。)时,它说
FATAL EXCEPTION: GLThread 563
Process: com.johnny.gamerpg, PID: 9855
com.badlogic.gdx.utils.GdxRuntimeException:
Asset not loaded: data/backgrounds/mainMenu.png
这是我在Main Class中的create()。
public void create()
{
batch = new SpriteBatch();
assetManager = new AssetManager();
assetManager.load("data/backgrounds/mainMenu.png", Texture.class);
startTime = TimeUtils.millis();
this.setScreen(new Splash(this));
if(assetManager.update() && TimeUtils.timeSinceMillis(startTime) > 3000)
{
setMainMenuScreen();
}
}
这是我的MainMenu类构造函数。
public MainMenu(GameControl gam)
{
this.game = gam;
assetManager = gam.getAssestManager();
background = assetManager.get("data/backgrounds/mainMenu.png", Texture.class);
}
setMainMenuScreen()
public void setMainMenuScreen()
{
setScreen(new MainMenu(this));
}
最佳答案
您是否曾经进入过菜单屏幕?您可以在Assetmanager完成加载之前和3000毫秒之前切换到Splash()。甚至在您检查任何这些之前。
assetManager.update()在资产加载之前将返回false。必须在每帧调用assetManager.update(),直到返回true为止。这意味着您应该检查
if(assetManager.update()){
//done loading
}
在您的render()中
你应该从搬家开始
if(assetManager.update() && TimeUtils.timeSinceMillis(startTime) > 3000)
{
setMainMenuScreen();
}
进入render()并重新考虑切换到启动屏幕的方式和时间。
关于java - AssetManager libgdx Assets 未加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39864880/