This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
使用纹理压缩不仅可以减少游戏存档中的资源大小,压缩后的纹理还可能减少所需的 GPU 内存量。
大多数游戏至少有一些内容使用不频繁。从内存使用的角度来看,一直将这样的内容加载在内存中是没有意义的,而是在需要时加载和卸载它。这显然是在以运行时内存为代价使某些内容易于访问,和以加载时间为代价加载某些内容之间的权衡。
Defold 有几种不同的动态加载内容的方式:
Defold 会在创建集合时为组件和资源分配一次内存,以减少内存碎片。分配的内存量取决于 game.project 中各种组件计数器的配置。使用分析器获取准确的组件和资源使用情况,并将您的游戏配置为使用更接近组件和资源实际数量的最大值。这将减少您的游戏使用的内存量(请参阅有关组件最大计数优化的信息)。
通过将 GUI 文件中的最大节点数设置为仅需要的数量来优化 GUI 节点数量。GUI 组件属性中的当前节点
字段将显示 GUI 组件使用的节点数量。
Defold HTML5 游戏的堆大小可以在 game.project 中的 heap_size
字段 进行配置。请确保优化您游戏的内存使用并设置最小的堆大小。
对于小型游戏,32 MB 是一个可实现的堆大小。对于较大的游戏,目标应为 64–128 MB。例如,如果您当前使用 58 MB 且进一步优化不可行,您可以设定为 64 MB 而不必过度纠结。没有严格的目标大小 — 这取决于游戏。只需尽量追求更小的大小,理想情况下以 2 的幂次方为步长。
要检查当前堆使用情况,您可以启动游戏并在最”资源密集”的关卡或部分中进行游戏,然后监控内存使用情况:
if html5 then
local mem = tonumber(html5.run("HEAP8.length") / 1024 / 1024)
print(mem)
end
您也可以打开浏览器的开发者工具,并在控制台中输入以下内容:
HEAP8.length / 1024 / 1024
如果内存使用量保持在 32 MB,那就太好了!如果没有,请按照以下步骤优化引擎本身以及声音和纹理等大型资源的大小。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB