2014-11-16 56 views
1

我在静态类中为我的游戏存储纹理。它们从一个管理器加载到这个类的静态数组中。libGDX在静态类中处理纹理

每个屏幕都有一个处理方法,但我应该在哪里调用处理纹理。 libGDX只处理应用程序出口,因此我应该在每个屏幕上处理纹理?

回答

3

把静态数组放在静态类中是一个坏主意。当您最小化游戏或其他类似情况时,管理内存和控制哪些纹理将被GC删除非常困难。

我建议您使用AssetManager来加载和处理您的资源。您可以在这里找到许多有关AssetManager和资源管理的有用信息Managing your assets

关于第二个问题:我不建议您在更换屏幕时处理/加载所有纹理。我用另一个方法:

  1. 在游戏开始显示加载屏幕,并加载所有可用经常纹理(如按钮,主菜单中的图形,主要角色,对话等)与AssetManager。如果你的游戏很小,你可以在这里加载所有的游戏纹理。
  2. 在游戏关闭之前不要处理这些纹理。
  3. 当您更改屏幕时,尝试加载/处理动态纹理(例如,如果您的每个关卡具有不同的背景,则可以加载/处理此背景)。
  4. 总是使用Texture packer为您的图形。
  5. 使用tinypng为了压缩你的.png图形。

P.S如果您想将所有纹理或任何其他资产保存在一个类中。创建Singltone类将保存Map<String,Texture>其中String是纹理或完整路径的名称。