Java libgdx:加载游戏中所有资产的最佳方式

Java libgdx:加载游戏中所有资产的最佳方式,java,libgdx,Java,Libgdx,在我的播放屏幕中,有许多纹理纹理、字体自由类型、图像scene2d.Image和按钮scene2d.Button。所以,当我设置播放屏幕时 ((Game) Gdx.app.getApplicationListener()).setScreen(new PlayScreen()); 打开屏幕需要几秒钟的时间 我想快速打开它,实现这一点的最佳方法是什么? 我是否创建一个新类来创建所有资产,然后将它们加载到屏幕上?。游戏开始时,管理员允许您加载资产。它还具有显示已加载资产百分比的功能,因此您可以显示

在我的播放屏幕中,有许多纹理
纹理
、字体
自由类型
、图像
scene2d.Image
和按钮
scene2d.Button
。所以,当我设置播放屏幕时

((Game) Gdx.app.getApplicationListener()).setScreen(new PlayScreen());
打开屏幕需要几秒钟的时间

我想快速打开它,实现这一点的最佳方法是什么?

我是否创建一个新类来创建所有资产,然后将它们加载到屏幕上?

。游戏开始时,管理员允许您加载资产。它还具有显示已加载资产百分比的功能,因此您可以显示进度条。有很多资料向您展示了如何使用
AssetManager
。一些示例显示了静态
AssetManager
的示例,但这会受到不良逻辑的阻碍,并可能导致黑色图像

您应该创建一个类,在其中存储您希望管理器处理的资产,并且管理器将异步加载它。我喜欢使用
AssetDescriptor
并使用静态描述符查找纹理。但是有许多不同的方法可以使用
AssetManager
。您只需向管理器添加一个类似于so
manager.load(“images/sometexture.png,Texture.class”);
的内容,然后通过执行
manager.get(“images/sometexture.png”);
这样,它就可以通过路径简单地查找纹理

public class Assets {
public AssetManager manager = new AssetManager();

    public static final AssetDescriptor<Texture> someTexture = 
        new AssetDescriptor<Texture>("images/sometexture.png", Texture.class);

public static final AssetDescriptor<TextureAtlas> uiAtlas =
        new AssetDescriptor<TextureAtlas>("ui/uiskin.pack", TextureAtlas.class);

public static final AssetDescriptor<Skin> uiSkin =
        new AssetDescriptor<Skin>("ui/uiskin.json", Skin.class,
                new SkinLoader.SkinParameter("ui/uiskin.pack"));

public void load()
{
    manager.load(someTexture);
    manager.load(uiAtlas);
    manager.load(uiSkin);
}

public void dispose()
{
    manager.dispose();
}
}
也许您可以像平常一样加载菜单资产,让资产管理器在用户在菜单中时工作。这取决于您。这就是加载资产的方式

someTexture = assets.manager.get(Assets.someTexture);
atlas = assets.manager.get(Assets.uiAtlas);
skin = assets.manager.get(Assets.uiSkin);

同样的规则也适用于在地图集中查找区域,最好是对地图集中的每个区域执行一次。您必须将
资产
对象传递到需要加载资产的任何位置。这很容易使其公开为静态,但可能会引起问题。

这就是答案。Thanx很多。)
someTexture = assets.manager.get(Assets.someTexture);
atlas = assets.manager.get(Assets.uiAtlas);
skin = assets.manager.get(Assets.uiSkin);