【问题标题】:Libgdx managing the assetsLibgdx 管理资产
【发布时间】:2014-01-23 13:40:32
【问题描述】:

我开始使用 libgdx 开发游戏。现在我想开始管理我所有的助手。我查看了this,但这并不是我真正需要的。我希望能够在屏幕变化时加载纹理(GameScreen:加载游戏资产,MenuScreen:处理游戏资产,加载菜单资产。)然后在任何地方都可以访问。这就是为什么我想到单身人士。我正在使用 scene2d 和图像的子类作为我的游戏角色。构造函数需要一个drawable,所以我需要在我的舞台子类中访问它,在那里我创建了我所有的角色。我还需要访问我的演员中的资产,因为如果他们拍摄我想播放拍摄声音。为此,我希望 MyAssetManager 加载并应用与 libgdx 首选项一起存储的声音首选项(音量...)。我怎么能意识到这一点?单身是个好主意吗?我的资产管理器应该使用内部的 libgdx 资产管理器吗?

编辑:我考虑使用 AssetManager 来加载资源和 SoundManager 来播放声音。我将在启动时加载首选项(音量)并将它们保存为变量。纹理在构造函数中提供给演员。你怎么看?

【问题讨论】:

    标签: java singleton libgdx assets


    【解决方案1】:

    我怎么能意识到这一点?单身是个好主意吗?我的资产管理器应该使用内部的 libgdx 资产管理器吗?

    为什么不两者兼而有之?使用AssetManager 有很多优点:

    • 大多数资源的加载都是异步完成的,因此您可以在加载内容时显示反应式加载屏幕
    • 资产被引用计数。如果两个资产 A 和 B 都依赖于另一个资产 C,则在 A、B 和 C 被处置之前,C 不会被处置。这也意味着,如果你多次加载一个资源,它实际上会被共享并且只占用一次内存!
    • 一个地方可以存储您的所有资产。
    • 允许透明地实现缓存之类的东西(请参阅下面的 FileHandleResolver)

    那么,您如何创建一个使用 AssetManager 加载/卸载您的资产的 Singleton 类。

    (顺便说一句,您链接的旧 wiki on google code 将不再更新,实际上删除它只是时间问题。改为链接到新 wiki:Managing your Assets

    【讨论】:

    • 感谢您的回答!所以我创建了一个内部有 AssetManager 的单例类(我们称之为 MyAssetManager)。所以它应该有一些方法(例如getBulletTexture)返回那个纹理对吗?它还应该管理声音的播放吗?并加载首选项,还是应该只加载资产并使其全球可访问?
    • 我通常有不同类别的偏好(Savings :p)。我也将我的资产类称为 Assets 并制作了一些方法,例如 loadMenuAssetsunloadMenuAssetsloadGameAssets...等等还管理那里的声音播放
    • 那么您的资产会加载首选项并将它们应用到您的声音中吗?您的 Asset 类是否也有返回纹理的方法?我的对象的构造函数采用 TextureRegion,所以我需要在创建时获取它。
    • 它有字段,所以我可以像这样访问它们:Assets.instance().mytextureregion。我的偏好在我的 Savings 类中,但是它们是由 Assets 访问的,例如对于 soundEnabled 偏好
    • 啊,好吧,所以您的资产加载资产,将它们存储在公共文件中,然后您可以直接访问它们?你用方法来播放声音对吗?
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2016-09-12
    • 2023-03-23
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多