如何使用AssetManager在libGDX中构建ResourceManager [英] How to build a ResourceManager in libGDX with AssetManager

查看:110
本文介绍了如何使用AssetManager在libGDX中构建ResourceManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的Android游戏中使用非静态AssetManager吗?我有很多层次.我应该如何使用AssetManager?我应该为每个级别创建一个单独的AssetManager吗?因为如果创建一个AssetManager,它将在第一个屏幕中加载所有纹理等.

I want use non static AssetManager In my android game? I have many levels. How should I use AssetManager? I should create for every level a separate AssetManager? Because if I create one AssetManager, it will load all textures, etc, in first screen.

推荐答案

您应该在主类中创建一个AssetManager,以便在应用程序启动时加载所有资产.然后,根据您的游戏,您应该为每个级别创建一个不同的屏幕或使用一个屏幕.然后,您将对AssetManager的引用传递给您创建的每个新屏幕实例(以供屏幕访问其资产).

You should create one AssetManager in your main class which load all assets at the startup of the application. Then for each level you should create a different screen or use one screen, depending on your game. Then you pass a reference of the AssetManager to every new screen instance you create (for the screen to access it's assets).

例如:

Main.java

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

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
}
}

这篇关于如何使用AssetManager在libGDX中构建ResourceManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆