2017-04-13 20 views
1

私はアセットマネージャを使用して自分のアセットをロードするだけで奇妙な問題を抱えています。私のassetManagerは、すべてを短く、よりきれいにするために作った別のクラスです。 My Assetクラスは静的ではありません。私はすべての資産を非静的なassetDescriptorにロードしました。Android Libgdx assetManager:アセットがロードされていません

表示中に私の資産をすべて読み込むスプラッシュ画面を読み込みます。私が他の画面を呼び出すと、私がロードした資産はロードされず、ゲームがクラッシュすることになります。スプラッシュ画面は読み込まれますが、新しい画面が割り当てられるとクラッシュします。

私はこの問題で2日間過ごしました。 15種類以上のバリエーションを試してみましょう。勝てない。

私のエラーメッセージは次のとおりです。

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); 


} 

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(); 
} 

Asset.classは読んで、おそらく私多分簡単な問題にご協力いただきありがとうございます。

+0

1.スプラッシュクラスは、画面を実装したり、ゲームクラスを拡張Splashクラスにパラメータ化コンストラクタを使用してmainMenuのオブジェクトを作成しています。 ? 2.あなたはmainMenuのパラメータ化されたコンストラクタを使用しています、それはどこですか? – Aryan

+0

Splash extends com.badlogic.gdx.game; とmainMenuはScreenを実装しています。メインメニュー 私はスプラッシュインプリメンテーション画面も作成する必要がありますか?私はちょうど私のスプラッシュで実際にgdx.gameを使用していないと思った。 – deathwillcome800

答えて

1

mainMenuクラスをご覧ください。アセットを持たない新しいAssetsオブジェクトを作成しているため、新しいAssetsオブジェクトを作成する代わりに、そのオブジェクトにアセットをロードしたため、アセットオブジェクトSplashが使用されます。

public Assets assets; 
public Texture Stuff; 

public mainMenu(){ 
    assets = new Assets(); // why are you creating new Assets here 
    Stuff = assets.manager.get(assets.stuff); 
} 

実際にあなたが

public mainMenu(Splash splash){ 
    assets = splash.assets; // instead of creating new take reference of Splash class assets 
    Stuff = assets.manager.get(assets.stuff); 
} 
+0

mainMenuの私の資産オブジェクトを "public assets assets = game.assets;"に変更しました。私のmainMenuメソッドはこのpublic mainMenu(スプラッシュゲーム)のように見えます。それは問題を解決していません。それは同じだ。 – deathwillcome800

+0

あなたのコードで編集したものをここで編集して、あなたのバグをさらに見つけることができます。 – Aryan

+0

私はこれを今のところやります。私の謝罪の。 – deathwillcome800

関連する問題