libGDX 在静态类中处理纹理

use*_*312 1 java android libgdx

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

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

Alo*_*man 5

在静态类中保存所有纹理都是静态数组是一个坏主意。当您最小化游戏或其他类似情况时,很难管理内存并控制 GC 将删除哪些纹理。

我建议您使用它AssetManager来加载和处理您的资源。您可以在此处找到有关 AssetManager 和资源管理的许多有用信息管理您的资产

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

  1. 在游戏开始时显示加载屏幕并加载所有常用的纹理(如按钮、主菜单图形、主角、对话框等)AssetManager。如果您的游戏很小,您可以在此处加载所有游戏纹理。
  2. 在游戏关闭之前不要处理这些纹理。
  3. 当您更改屏幕时,尝试仅加载/处理动态纹理(例如,如果您的每个关卡都有不同的背景,您可以加载/处理此背景)。
  4. 始终为您的图形使用纹理打包器
  5. 使用tinypng来压缩您的.png图形。

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