优化工作一直是游戏开发中必不可少的一环。尤其对于移动平台而言,高中低档设备众多,为了尽可能满足更多的玩家,性能优化就显得更为重要。因此,Unity 也一直在提升和开发更多的优化工具,并分享最新的优化案例。
在之前的一些文章中,可能更多的是偏重工具本身以及优化理论的一些介绍,对于新手来说有一定的门槛。而这一次,我们将技术支持团队中总结出来的优化流程,常用工具及优化方法分享给大家,希望对大家的优化工作有所帮助。
首先,在本教程的第一部分,我们先介绍下基本的优化流程及常用工具。
基本优化流程介绍
通常来说,我们在做优化的时候遵循如下一个基本流程:
01 确定优化目标。
这是首先要明确的事情,比如是做一次针对内存或者渲染的局部优化,还是为确保在低端机上运行流畅进行的全面优化。相信对于任何项目来说,开发时间都是宝贵的,只有明确了目的才能有的放矢,确保项目的有序推进。
02 收集数据。
通过各种常用或自定义工具收集相关数据。常用的工具包括,Unity Profiler,XCode Instruments,以及优化服务平台 UPR,这一部分我们将在后一节重点介绍。
03 解决问题。
基于各类分析工具收集的数据,寻找合适的解决方案。当然,从分析数据到解决问题也是优化过程中最不容易的部分,这需要熟悉分析工具中各个指标的含义并深刻理解 Unity 各个系统的运行原理,才能得出最有效的优化方案。而这也是本系列教程会不断通过实例会重复讲述的内容。
常用分析工具介绍
常用分析工具大概可以划分为两大类:综合分析和专项分析。在收集数据进行性能分析的时候,我们常常会先使用综合分析工具对项目进行测试,得出总体评价,再通过专项分析对局部问题进行深入研究。
综合类分析工具
Unity Pofiler,这是最常用的分析工具。在编辑器中可以直接打开使用,可以监控编辑器或者目标平台上的应用。收集的数据包括每一帧中的函数热点,内存使用,物理及音频模块开销等多种关键性能数据。
具体使用方法可以查看 Profiler 的使用手册,也可以观看视频教程《Unity Profiling 介绍》进行详细的了解。
Profiler 的使用手册:
https://docs.unity3d.com/Manual/Profiler.html
Unity Profiling 介绍:
https://resources.unity.com/unitenow/onlinesessions/introduction-to-profiling
UPR,这是最新的 Unity 性能综合分析平台。在 Profiler 的基础上,增加了更多的性能指标及功能,比如常用的资源检测及 Lua 性能分析。此外,基于 Web 的数据中心,提供了更强大的数据展示及对比功能,且同时对接性能报告解读服务。因此,该平台也逐渐成为我们在帮客户做优化时主要使用的工具。
当然该工具也是对广大开发者开放的,详细使用方法可以查看使用手册。
UPR 官网:
https://upr.unity.cn
UPR 使用手册:
https://upr.unity.cn/instructions/instructions
专项分析工具
Frame Debugger,用于展示每个帧如何由单独的绘图调用构成,以及相应的着色器属性,可以帮助你排查渲染流程是否正确,是否正确合批。
Frame Debugger:
https://docs.unity3d.com/Manual/FrameDebugger.html
平台相关工具,iOS 和 Android 都提供自身的性能测试工具:Xcode Instruments 和 Android Profiler,这些工具可以侦测更详细的内存及 GPU 信息。比如 Xcode Instruments 也提供了 Frame Capture 的功能,可以用于查看每一帧详细的绘制流程,以便判断是否存在多余而耗时的绘制。
此外,某些硬件还可以提供了额外的分析工具,例如,Arm Mobile Studio、英特尔 VTune 和 Snapdragon Profiler。有关详细信息,请参阅教程《基于 Unity 应用程序的性能分析》。
基于 Unity 应用程序的性能分析:
https://learn.unity.com/tutorial/profiling-applications-made-with-unity#5c7f8528edbc2a002053b5b8
本文转自unity公众号