我在libgdx中遇到了AssetManager的问题,我在我的Main类中创建它并有一个getMethod将assetManager返回到我的屏幕。当我在我的屏幕类中转到assetManager.get(等)时,它说
$ sudo ifconfig lo0 10.0.0.2 alias
$ echo "rdr pass on lo0 inet proto tcp from any to 10.0.0.2 port 80 -> 127.0.0.1 port 32771" | sudo pfctl -ef -
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf already enabled
这是我在Main Class中的create()。
FATAL EXCEPTION: GLThread 563
Process: com.johnny.gamerpg, PID: 9855
com.badlogic.gdx.utils.GdxRuntimeException:
Asset not loaded: data/backgrounds/mainMenu.png
这是我的MainMenu类构造函数。
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();
}
}
setMainMenuScreen()
public MainMenu(GameControl gam)
{
this.game = gam;
assetManager = gam.getAssestManager();
background = assetManager.get("data/backgrounds/mainMenu.png", Texture.class);
}
答案 0 :(得分:2)
你有没有进入菜单屏幕?在assetmanager完成加载之前和3000 milisecs之前切换到Splash()。甚至在你检查其中任何一个之前。
assetManager.update()将返回false,直到加载资产。 assetManager.update()意味着每帧都被调用,直到它返回true。这意味着您应该检查
if(assetManager.update()){
//done loading
}
你的渲染()中的
你应该从移动开始
if(assetManager.update() && TimeUtils.timeSinceMillis(startTime) > 3000)
{
setMainMenuScreen();
}
进入render()并重新考虑切换到Splash屏幕的方式和时间。