我在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/

10-10 03:26