LibGDX中的AssetManager

6
我正在尝试使用LibGDX中的AssetManager类,我理解它的工作原理,但我正在尝试实现一个加载屏幕。我已经按照AssetManagerTest.java文件here的指示进行了操作,但我很难弄清楚如何使其正常工作。有人能指点我正确的方向吗?我的目标是加载资产(纹理、声音、字体等),并在屏幕上更新一个带有百分比完成情况的条形图。我不理解链接中的ResolutionFileResolverResolution[]是什么。它们有什么作用?我的目标是支持一个静态类,可以让我从任何屏幕访问我需要的所有资产。有没有首选的方法来实现这一点?谢谢。
1个回答

7
在查看了ResolutionFileResolver的源代码以及其他“解析器”之后,我认为这只是一种加载最符合屏幕分辨率纹理的方式,但匹配仅基于文件名模式。
因此,在 AssetManagerTest 中,他为屏幕大小320x480、480x800和480x854设置了纹理。每组纹理看起来应该放在名为“.320480”或“.480800”或“.480854”的目录中(尽管名称可以是任何您想要的名称,例如“低”、“高”和“宽”如果那是您的目录),并且当创建解析器数组时指定所有这些信息。参见测试的第56行
这样做的好处是,当他调用manager.load()时,他只挑选一个文件名,比如“data/animation.png”。然后解析器找到与当前屏幕分辨率最接近的纹理包,并加载它。
至于更新进度条,您只需要在每次调用load后手动执行即可。
对于使用静态类进行资产管理,这绝对是一种可能的选择。另一个类似的选项是只使用单例。它有它的仇恨者,但我认为在垃圾回收的环境下进行简单的项目应该可以,尽管它与公共静态相同。
另一个选项-也许最好的?-是使用具有游戏全局变量静态副本的基类,然后所有其他游戏类都从它继承。这是Replica Island中使用的方法。请参见基类对象注册表。 Replica Island有良好的注释值得Android和Java游戏开发者查看。

1
非常感谢,这解决了很多问题。我已经让它工作了,并且使用了您的建议并制作了一个基类,我真的很喜欢它,看起来更加清晰。感谢您的帮助! - Alex_Hyzer_Kenoyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接