性能优化的第一步是 收集数据,在 Unity 中我们有多种性能分析工具可供使用。下面简单介绍几个常用工具。

Unity Profiler

Unity Profiler 是最常用的性能分析工具。Unity 自带,通过 顶部栏Window >Analysis > Profiler 即可打开。

在游戏启动前,或游戏过程中点击 Record 按钮可以开启性能测试,启动后点击 Profiler 界面后将自动停止游戏运行,并在绘制出性能数据曲线。

Record 按钮右侧的两个按钮可以逐帧移动当前选定帧;右上角的 Save 和 Load 按钮用于保存和加载性能测试数据。

工具提供了 ‘CPU Usage’、’Memory’、’GPU Usage’ 等各个性能选项,选中对应选项可以在“下窗口”看到对应选项的性能细节。

点击 CPU Usage选项后,能在“下窗口”中看到CPU数据时间线细节,当前选中帧的范围会高亮显示,通过滚轮能够放大缩小范围尺度。

点击“下窗口”的Timeline 视图的下拉菜单,还能能够切换到 “Hierarchy” 和 “Raw Hierarchy”。在 Hierarchy 视图中能够确认选定帧的 CallStack,确认函数调用占时耗比、GC Alloc、耗时等。

点击 GPU Usage 选项后,能在“下窗口”中查看GPU相关信息。如果找不到 GPU Usage 选项,可以确认下 Profiler 左上角的 Profiler Modules 是否开启GPU。

Frame Debugger

Frame Debugger 能够查看某一帧的渲染过程。Unity 自带,通过 顶部栏Window >Analysis > Frame Debugger 即可打开。

运行过程中,点击 Frame Debugger 的 Enable 按钮,会自动暂停运行,并在界面中展示当前帧的渲染顺序。

选中某一步骤还能再界面右侧看到该步骤使用的 Shader、Shader属性 等信息,同时 Game视图 中会展示截至到该步骤的渲染结果。

在优化 DrawCall,调试 Shader 时较常使用。

Profile Analyzer

Profile Analyzer 支持查看分析一段时间之内的性能分析数据,目前标准的 Profiler 只支持查看一帧的数据。另外Analyzer也支持针对两段Profile数据进行对比。

Profile Analyzer 需要通过 Package Manager 安装,包范围切换到 Unity Registry,在搜索框搜索 “Profile Analyzer” 后 Install 即可。

完成安装后通过顶部栏Window >Analysis > Profile Analyzer 即可打开。

使用时,我们先使用 Profiler 记录一段运行时间的性能数据信息,然后点击 Pull Data 按钮,可以从 Profiler 中拉取记录的性能数据到 Profile Analyzer 中。

在曲线图中拖动可以选定要分析范围,Profile Analyzer 提供了该范围内的进程、耗时、记录点的概况,某一记录点在该范围内的耗时信息、出现帧数等。

使用 Save 按钮 和 Load 按钮还能保存和记录这段性能分析数据。

点击 Compare 按钮,能够切换到 Compare 模式。你可以分别通过 Pull Data 即时抓取两段性能数据,或是通过 Save 按钮准备好两份性能数据再 Load 进来。这时Profile Analyzer 提供的信息就带上了两段性能数据的对比。