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