2016-08-06 26 views
0

我想使用非靜態AssetManager在我的Android遊戲中?我有很多關卡。我應該如何使用AssetManager?我應該爲每個級別創建一個獨立的AssetManager?因爲如果我創建一個AssetManager,它將在第一個屏幕中加載所有紋理等。如何使用AssetManager在libGDX中構建ResourceManager

回答

0

您應該在主類中創建一個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 
} 
}