顶部页签
一、主要目标
- 了解顶部页签中每一部分的作用
- 着重记忆重要参数
二、页签相关
1.Profiler Modules
模块列表,我们可以在这里设置性能检测哪些模块可以在这里通过勾选和取消勾选来进行选择 - Highlights:高光区域,会把可能存在问题的帧高亮显示CPU(非Unity6的版本似乎没有,我使用的Unity版本为2022LTS) - CPU Usage:CPU 使用率 - GPU Usage:GPU 使用率 - Rendering:渲染相关Memory:内存相关 - Audio:音效相关 - Video:视频相关 - Physics:物理系统相关 - UI:用户界面相关 - UI Details:用户界面详细信息 - Realtime Gl:实时Gl(光照相关) - Virtual Texturing:虚拟纹理 - File Access:文件访问 - AssetLoading:资源加载
2.Play Mode
选择进行性能分析所针对的目标 - Play Mode:播放运行模式下分析 - Edit Mode:编辑模式下分析,可以对Unity编辑器进行性能分析
- Direct Connection:定向链接可以选择输入运行应用程序的设备IP进行远程调试(一般进行内网调试)
注意:需要在发布应用程序时选择 - Development Build:开发模式构建 - Autoconnect Profiler:自动连接分析器(可选) - Deep Profiling support:深度分析支持(可选,可以获取更多信息)
注意: 1. 如果电脑上运行着通过开发者模式构建的应用程序在此窗口中可能会直接显示可以连接调试的本地应用程序,直接进行选择即可 2. 如果移动设备通过USB线连接着电脑,下方也会显示Unity能够调试的设备
3.四个按钮
从左到右依次为: - 录制按钮: 启用后,可以在运行应用程序时记录活跃模块的性能分析信息 - 前移按钮 向前移动一帧获取数据 - 后移按钮 向后移动一帧获取数据 - 当前帧按钮 自动跳到记录的最后一帧,即:运行时始终显示最后一帧
4.帧
帧: 当前帧/总帧数(性能分析工具在整个分析期间收集的总帧数)
5.Clear
清理 清除profiler窗口所有数据
6.Clear On Play
运行时清理 启用后,下次运行时链接到目标设备时, 性能调试窗口会擦除所有数据
7.Deep Profile
深度性能分析:
启用后会对所有C#方法进行性能分析分析器会对脚本代码的每个部分进行性能分析,并记录所有函数调用,至少包括进入任何 UnityAPI 中的第一个调用栈深度。 注意:此信息可用于帮助您确定代码对应用程序性能的影响,但这会带来很大的开销
8.Call Stacks
呼叫堆栈: 勾选后,会记录用于脚本内存分配的调用栈性能分析器记录的帧包含所选样本在完整调用栈的信息 即使在 Deep Profile 未激活的情况下,完整调用栈上的这些样本也会导致托管脚本分配,从而会对性能和GC有一定的影响
- GC.Alloc Unity 的 托管内存分配(C# 层)
- 非常常见,几乎所有C#脚本开发中都会有
- 主要关注:减少堆内存分配,控制GC频率
- UnsafeUtility.Malloc(Persistent) 原生(非托管)内存分配函数(原生C++层),比如图形API、DOTS系统中分配的一些内存
- 中等常见,原生容器、底层插件、DOTS中会出现
- 主要关注:留意资源是否释放
- JobHandle.Complete 表示主线程阻塞等待某个Job完成;DOTS、ECS、Burst、UnityPhysics、AnimationRigging 等系统中会出现
- 不常见:多线程任务系统中才会有
- 主要关注:除非使用了多线程任务系统,否则无需关心
9.最后四个按钮
从左往右依次 - 读取已保存的性能分析数据显示到性能分析窗口中 - 保存当前获取的性能分析数据 - 帮助(跳转到Unity官方使用手册) - 更多 - Show stats for “current" frame 是否显示当前帧(也就是正在录制的那一帧)的统计信息 - Preferences 打开偏好设置菜单
三、Preferences(偏好设置)中的Profiler参数
- Frame Count: Profiler 保存的帧数(Frame)的最大数量;决定你可以在 Profiler 中向后查看多少帧的性能数据,超过这个数量的帧数据将被丢弃; 建议:改高一点,比如600,以便查看更长历史数据
- Show Stats for 'current' frame 是否显示当前帧(也就是正在录制的那一帧)的统计信息 建议:打开,方便试试观察
- Default recording state Unity 启动后或进入 Play 模式时,Profiler 是否默认开始记录 建议:Enabled,方便自动录制
- Default editor target mode on start Unity 编辑器启动后,Profiler 默认分析哪个目标 建议:Play Mode,因为更多是对项目进行调试,编辑器拓展一般很少遇到性能问题
- Custom connectionID 用于标识设备连接的ID,适用于远程 Profiler 连接;用于设置连接到特定设备或进程时使用的标识名 比如:可以通过代码在设备端设置ID:Profiler.SetConnectionldentifier("MyDevice1”);然后在这里填写MyDevice1好,Unity就会优先连接这个ID的设备
- Target Frames Per Second (Highlights Module) (非Unity6的版本似乎没有,我使用的Unity版本为2022LTS) Highlights 模块的目标帧率;Profiler 中的Highlights 模块 会以这个帧率为基准进行性能表现分析(如掉帧)。设置为 60 表示以 60 FPS 为目标; 建议:设置为调试的目标设备的理想帧率,比如手机一般是30或60,PC是60或120等