在我的libgdx游戏中,我使用了很多“沉重”的图形。这是一个巨大的画布,有很多帧动画。此画布的分辨率大于1000 * 1000。有很多这样的图形(函数loadTextures()大约是200行代码)。即使在高端设备上,加载游戏也需要花费大量时间,而且在最多的弱设备中游戏甚至无法加载并挂起加载图形。
如何优化所有这些东西?你如何解决这样的问题?
答案 0 :(得分:1)
首先确保您的纹理不会超过1024x1024的大小,并始终使用二维的力量。如果您有多个较小(或非POT)纹理,请将它们打包成一个较大的纹理(最大1024x1024)。
拥有许多纹理(每个1024x1024)将占用大量内存,因此您应该重新考虑您的方法。例如,您可以在游戏中的某些时间点(使用AssetManager)加载/卸载纹理(调用System.gc();之后,为了使垃圾收集器在某种程度上受到控制)。
如果这不可能(例如,所有纹理都用于相同的动画),例如,考虑缩小纹理尺寸,仅动画实际更改或使用骨架动画的部分(例如,查看Spine,http://esotericsoftware.com/)。
针对您的情况的最佳方法可能会有所不同。但总的来说,如果您需要多个纹理,请考虑以下指南: