我正在创建一个libgdx游戏,它运行良好,完美加载了所有资产等。但是,我随后尝试实现libgdx的Asset Manager'
以添加活动的加载屏幕等。但是这样做后,我的游戏需要很长时间才能在桌面上加载,保持黑屏,几乎崩溃然后最终崩溃,在我的资产上,我不断收到错误或类似错误:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load
file: data/startBackground.png
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:92)
at com.MKgames.game1.screen.MainMenuScreen.show(MainMenuScreen.java:98)
at com.badlogic.gdx.Game.setScreen(Game.java:61)
at com.MKgames.Game1.render(Game1.java:41)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: java.io.IOException: couldn't load pixmap outofmem
at com.badlogic.gdx.graphics.g2d.Gdx2DPixmap.<init>(Gdx2DPixmap.java:57)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:138)
... 10 more
然后我尝试删除我的资产类,同样的事情不断发生。
data/startBackground.png
是 1920*1080 .png图像。
我有一种感觉,与游戏本身相比,在计算机上运行它可能是一个问题?
以下是在没有资源管理器的情况下正常加载资产的方式(在我尝试实现资源管理器之前,这曾经有效,但现在一旦我删除资源管理器就不工作了):
public void show() {
Texture backgroundTexture = new Texture(Gdx.files.internal("data/startBackground.png"));
background = new Sprite (backgroundTexture);
}
以下是我如何使用资源管理器加载此资产:
public class Game1 extends Game{
public void render() {
if(Assets.update()){
this.setScreen(new MainMenuScreen(this));
}
}
}
。
public class Assets {
public static AssetManager manager = new AssetManager();
public static void queueLoading() {
(..)
manager.load("data/startBackground.png",Texture.class);
(..)
}
public static boolean update() {
return manager.update();
}
}
Game1 渲染方法每帧调用一次,因此您在每一帧上创建一个新屏幕,并且屏幕在每次显示调用中创建新的纹理实例,您最终会耗尽内存。
另外,不要忘记添加
super.render();
在游戏类呈现方法中。否则,将不会调用当前屏幕的 render()