Ich habe ein seltsames Problem mit dem Laden meiner Assets, mit dem AssetManager. Mein AssetManager ist eine separate Klasse, die ich gemacht habe, um alles kürzer und sauberer zu machen. Meine Asset-Klasse ist nicht statisch. Ich habe alle Assets in einem nicht statischen AssetDescriptor geladen.Android Libgdx AssetManager: Asset nicht geladen
Ich lade meinen Startbildschirm, der alle meine Assets lädt, während dieser angezeigt wird. Wenn ich den anderen Bildschirm anrufe, können die Assets, die ich geladen habe, nicht geladen werden und mein Spiel zum Absturz bringen. Der Begrüßungsbildschirm wird geladen, aber wenn ein neuer Bildschirm zugewiesen wird, stürzt er ab.
Ich habe 2 Tage zu diesem Thema verbracht. versuche mehr als 15 Variationen. Um keinen Vorrang zu haben.
Meine Fehlermeldung lautet:
com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: stuff.png
at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:144)
at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:167)
at com.nectar.pewdybird.mainMenu.<init>(mainMenu.java:71)
at com.nectar.pewdybird.pewdyBird.render(pewdyBird.java:68)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:459)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
Splash.class:
public Assets assets;
public void create(){
assets = new Assets();
assets.load();
}
public void render(){
if(assets.update()) {
setScreen(new mainMenu(this));
dispose();
} else {
//Splash Screen
gl.glClearColor(0,0,0,1);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
//Draws SplashScreen
batch.end();
}
}
public void dispose(){
this.screen.dispose();
this.batch.dispose();
}
mainMenu.class
public Assets assets;
private Texture Stuff;
public mainMenu(Splash game){
assets = game.assets;
Stuff = game.assets.manager.get(game.assets.stuff);
}
Asset.class
public AssetManager manager = new AssetManager(new InternalFileHandleResolver());
public final AssetDescriptor<Texture> stuff =
new AssetDescriptor<Texture>("stuff.png", Texture.class);
public void load(){
manager.load(stuff);
//12 More loads
manager.finishLoading();
}
public boolean update(){
return manager.update();
}
Vielen Dank für das Lesen und möglicherweise mit meiner vielleicht einfache Frage zu helfen.
1. Splash-Klasse implementiert Bildschirm oder erweitert Spielklasse. ? 2. Sie verwenden den parametrisierten Konstruktor von mainMenu, wo ist es? – Aryan
Splash erweitert com.badlogic.gdx.game; und mainMenu implementiert Bildschirm. und das MainMenu sollte ich auch den Splash-Bildschirm zu machen? Ich dachte nur, dass ich gdx.game nicht in meinem Splash benutze. – deathwillcome800