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