Android系统。 libgdx。加载大量图形

时间:2013-08-01 18:12:59

标签: android memory graphics libgdx

在我的libgdx游戏中,我使用了很多“沉重”的图形。这是一个巨大的画布,有很多帧动画。此画布的分辨率大于1000 * 1000。有很多这样的图形(函数loadTextures()大约是200行代码)。即使在高端设备上,加载游戏也需要花费大量时间,而且在最多的弱设备中游戏甚至无法加载并挂起加载图形。

如何优化所有这些东西?你如何解决这样的问题?

1 个答案:

答案 0 :(得分:1)

首先确保您的纹理不会超过1024x1024的大小,并始终使用二维的力量。如果您有多个较小(或非POT)纹理,请将它们打包成一个较大的纹理(最大1024x1024)。

拥有许多纹理(每个1024x1024)将占用大量内存,因此您应该重新考虑您的方法。例如,您可以在游戏中的某些时间点(使用AssetManager)加载/卸载纹理(调用System.gc();之后,为了使垃圾收集器在某种程度上受到控制)。

如果这不可能(例如,所有纹理都用于相同的动画),例如,考虑缩小纹理尺寸,仅动画实际更改或使用骨架动画的部分(例如,查看Spine,http://esotericsoftware.com/)。

针对您的情况的最佳方法可能会有所不同。但总的来说,如果您需要多个纹理,请考虑以下指南:

  • 启动时,只加载整个游戏或主/菜单屏幕所需的纹理。
  • 当切换屏幕(级别)时,卸载不再需要的纹理并加载特定于该屏幕/ leveen的纹理(同时您可以显示加载屏幕,例如。)。
  • 避免使用超大的纹理(例如,纹理加载为1024x1024而实际上在屏幕上以200x200渲染是浪费内存)
  • 避免加载部分相同的纹理(例如,当有多个脸部图像时,只有眼睛不同,请考虑将脸部分割成头部并分开眼睛图像。)