2012-03-07 39 views
6

我想在LibGDX中使用AssetManager类,我理解它是如何工作的,但我试图实现一个加载屏幕。我遵循AssetManagerTest.java文件here, ,但我很难找出如何使其正常工作。有人能指引我朝着正确的方向吗?我的目标是加载资源(纹理,声音,字体等),并在屏幕上更新完成百分比的条形图。我不明白我提供的链接中的ResolutionFileResolverResolution[]。他们是为了什么?我的目标是支持一个静态类,它可以让我在任何屏幕上访问我在游戏中需要的所有资源。有没有一个首选的方法来做到这一点?谢谢。AssetManager在LibGDX

回答

7

在查看ResolutionFileResolver以及其他“解析器”的源代码后,我认为这只是加载最适合屏幕分辨率的纹理的一种方式,但匹配仅基于文件名模式。

因此,在AssetManagerTest中,他获得了屏幕尺寸为320x480,480x800和480x854的纹理。看起来每组纹理都应该放在名为“.320480”或“.480800”或“.480854”的目录中(尽管名称可以是任何你想要的,比如“低”,“高”和“宽”如果这些是您的目录),并且在测试的line 56上创建解析器数组时指定所有这些信息。

做所有这些事情的好处是,当他拨打manager.load()时,他只是选择了一个像“data/animation.png”这样的文件名。然后解析器找到最接近当前屏幕分辨率的纹理包,并加载该纹理包。

我认为这个例子的其余部分应该很清楚,至少在AssetManager的基础上。创建一个经理,设置加载器,调用load(),调用get()来使用它,然后在完成时调用unload()

对于更新进度条,您只需在每次加载调用后手动执行此操作。

而使用静态类进行资产管理肯定是一种可能性。另一个类似的选择是只使用一个单例。它有它的仇敌,但我认为在垃圾收集环境中的一个简单项目中应该没问题,尽管它与公共静态一样。

另一种选择 - 可能是最好的 - 是使用一个基类,它具有游戏全局变量的静态副本,然后所有其他游戏类都从它继承。这是Replica岛使用的方法。请参阅base classobject registry。 Replica Island评论很好,值得一试Android版& Java游戏。

+1

非常感谢,清除了很多东西。我得到它的工作,我用你的建议,并做了一个基础班,我真的很喜欢这样,似乎更干净。谢谢您的帮助! – 2012-03-08 13:50:28