gpt4 book ai didi

java - 如何在多个屏幕中处理 AssetManager

转载 作者:行者123 更新时间:2023-11-29 19:11:25 26 4
gpt4 key购买 nike

public static AssetManager assets = new AssetManager(); 应该避免,但是如何在多个屏幕中处理 AssetManager?这是一个好的解决方案吗?

public class myGame {

assetMananger manager = new AssetManager();
...
public assetManager getAssetMananger(){
return manager;
}
}

public class GameScreen implements Screen{

private AssetManager manager;

public GameScreen(myGame game){
manager = game.getManager();
}

public void render(){
manager.load(...);
}

最佳答案

Gdx.app.getApplicationListener() 返回 ApplicationListener 实例。您可以对已实现的类进行类型转换,然后轻松访问该类的任何方法或数据成员。

这样:

((GdxTest)Gdx.app.getApplicationListener()).assets  // <-- You can use from where you want in your project. 

ApplicationListener 实现类:

public class GdxTest extends ApplicationAdapter {

public Assets assets;

@Override
public void create() {

assets= new Assets();
}

....

@Override
public void dispose() {
assets.dispose();
}
}

Assets 处理游戏所有 Assets /资源的类

public class Assets implements Disposable {

public AssetManager assetManager;

public Assets(){

assetManager=new AssetManager();
}

...

@Override
public void dispose() {
assetManager.dispose();
}
}

  • create() 方法中加载所有资源,并在所有数据加载到 AssetManager 时显示启动画面。 (小型项目的最佳方式)

  • 否则,对于拥有大量资源的大型项目,卸载不必要的资源 -> 加载新资源,同时向用户显示加载屏幕。

关于java - 如何在多个屏幕中处理 AssetManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com