2016-08-06 11 views
0

私は非静的なAssetManagerを使用したいと思いますか?私は多くのレベルがあります。 AssetManagerはどのように使うべきですか?別のAssetManagerをすべてのレベルで作成する必要がありますか? AssetManagerを1つ作成すると、最初の画面にすべてのテクスチャなどがロードされるためです。AssetManagerを使用してlibGDXでResourceManagerを構築する方法

答えて

0

メインクラスに1つのAssetManagerを作成して、アプリケーションの起動時にすべてのアセットをロードする必要があります。次に、各レベルについて、ゲームに応じて別の画面を作成するか、または1つの画面を使用する必要があります。次に、作成したすべての新しいスクリーンインスタンス(AssetManagerのアセットにアクセスする画面用)に、AssetManagerの参照を渡します。例えば

Main.java

public class Main extends Game { 

private GameScreen gameScreen; // the game screen 

private AssetManager assetManager; // for loading all assets 

public void create(){ 
    assetManager = new AssetManager(); 
    assetManager.load("assets/data/yourSkin", Skin.class); 
    assetManager.finishLoading(); // load assets (not asynchron for this example) 
    setGameScreen(); 
} 

public void setGameScreen(){ 
    setScreen(new GameScreen(this)); 
} 

public void dispose() { 
    assetManager.dispose(); // disposes all assets when the game exits 
} 

// so that screens can get the assetManager from the main class 
public AssetManager getAssetManager() { return assetManager; } 
} 

GameScreen.java

public class GameScreen implements Screen { 

private Main mainClass; 
private AssetManager assetManager; 

private Skin skin; // holds fonts, button style, ... 


public GameScreen(Main mc) { 

    // init 
    this.mainClass = mc; 
    assetManager = mc.getAssetManager(); 


    // load skin 
    skin = assetManager.get("assets/data/skin", Skin.class); 

    // make GUI... 
} 


@Override 
public void render(float delta) { 
    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    // draw 
} 
} 
関連する問題