移动优化实用指南 — 优化脚本

本节介绍了如何优化游戏使用的实际脚本和方法,同时也详细说明了介绍了优化能够发挥作用的原因,以及为何在某些情况下应用优化可以带来诸多益处。

分析器 (Profiler) 才是王道(Unity 专业版)

事实上,并不存在这样一个供勾选的复选框清单,可以确保工程顺利运行。如需优化运行缓慢的工程,必须通过分析找到占用过多时间的特定“罪犯”。在没有进行性能分析,或没有充分理解分析器提供 的结果的前提下优化,无疑是盲目的优化。

因此,如果想要技术要求非常严苛的游戏在移动平台上运行,可能需要使用 Unity 专业版的分析器 (Profiler)

Indie 怎么样?

您可以使用内部分析器判断哪些过程导致游戏运行缓慢,是物理、脚本还是渲染,但您不能再深入探讨详细的脚本和方法,找到问题的根源所在。但是,通过在游戏中构建可以启用和禁用某些功能的交换器,可以明显缩小问题根源的范围。例如,如果删除敌人角色的 AI 脚本,且帧速率变成两倍,您将知道,是脚本或是脚本带入游戏中的其他方面必须进行优化。唯一的问题,是在找到问题之前,必须尝试不同的方法。

如需了解移动设备性能分析的更多详细信息,请参阅性能分析部分

通过设计优化

尝试开发从一开始就能快速运行的游戏具有很大的风险,因为必须权衡像在没有优化的情况下一样,游戏照样快速运行所花费的时间,和由于游戏太慢在稍后必须对其进行删除或替换所花费的时间。就此而言,开发人员对硬件必须具备敏锐的直觉和丰富的知识,特别是由于每种游戏都与众不同,一种游戏的关键优化对另一种游戏而言可能完全不起作用。

对象池 (Object Pooling)

优化脚本方法简介中,我们将对象池 (Object Pooling) 作为同时具有合理的游戏设置和良好的代码设计的示例。将对象池用作短暂的对象比创建并摧毁这些对象更加快速,因为它让内存分配更加简单,并清除了动态内存分配占用和垃圾收集 (Garbage Collection,或称 GC)。

内存分配

+ Show [自动内存管理的简单阐释] +