我们在做项目的时候,都经常会通过Unity中的Game窗口来查看当前场景中的性能指标,通过Stats标签按钮打开一个Statistics窗口,本文将对相关Graphics下的数据做一个相对详细的介绍,注意由于是在Editor环境下所以所有的数据跟实机数据肯定会有差距。
1.FPS: Fragments Per Second,自然是Unity每秒渲染的帧数,是一个关键的性能指标,其能维持在一个正常的范围决定了整个项目的流畅度,指标严重低于目标范围的情况被称为掉帧,会带来严重的卡顿感。
2.CPU Main: 是cpu处理一帧所消耗的总时间,单位一般为毫秒,这个时间不仅仅包含项目中更新每一帧所需要的各种操作耗时,也包含对应用外editor下的其他窗口和工具更新的耗时。
3.CPU Render: 渲染每帧所需要的时间,为应用或者游戏中所需要的时间,包含在main的时间之内。
4.Batches: 为Unity中处理每帧中draw call batches(绘制图元的指令批处理)的总数,包括动态批次、静态批次以及GPUInstancing的批次总和。
5.Saved by batching: Unity将draw call 合并后所节省的drawcall数量,每个Batche group的渲染状态都是相同的,所以有相同渲染状态的draw call可以被合并到一个批次之中。
6.Tris: Triangles的缩写,每帧中Unity要处理的三角形总数,优化中的重点数据。
7.Verts: Vertices的缩写vertex的复数,每帧中Unity要处理的顶点数据总数,优化中的重点数据。
8.Screen: 屏幕的显示分辨率,后面是跟着的是其所占用的存储空间。
9.SetPass Calls: 每帧中Unity为渲染GameObject而切换Shader Pass 的次数,一个Shder可能包含多个Pass,例如卡通着色中一个Pass用来渲染颜色、一个用来描边另一个用来画顶点阴影,每一个Pass都需要Unity去重新绑定一个新的Shader。可以看出Batches是要大于等于SetPass Calls的,而且最耗费性能的也是SetPass Calls操作,所以更是优化的核心数据指标。
10.Shadow Casters: 每帧投射阴影的GameObject的总数量。
11.Visible skinned meshes: 每帧中SkinnedMeshRenderer组件出现的总数量。
12.Animation components playing: 每帧中正在播放的Animation组件。
13.Animator components playing: 每帧中正在播放的Animator组件。