4.Unity性能分析工具-顶部页签
4.1 知识点
主要目标
- 了解:Profiler 顶部页签中每一部分的作用
- 记录:常用参数的含义与使用场景
主要目标就是把顶部这条工具栏“认全”。后面你分析卡顿、掉帧、内存波动,基本都会回到这几个入口来回切。
顶部页签总览

从左到右(图中 1~9):
- 模块选择(Profiler Modules)
- 分析目标(Play Mode)
- 录制与跳帧
- 帧数显示
- 清理(Clear)
- 运行时清理(Clear on Play)
- 深度分析(Deep Profile)
- 调用栈(Call Stacks)
- 读取/保存/帮助/更多
模块选择(Profiler Modules)
入口(下拉)

点击 Profiler Modules 下拉菜单,用于快速选择要显示/采样的模块集合。
模块列表(勾选/取消勾选)

模块列表用于决定 Profiler 当前要采集与展示哪些数据。常见模块:
- 高亮(Highlights):把疑似异常帧标出来,先抓“问题帧”再往下看
- CPU 使用率(CPU Usage):看 CPU 每帧主要花在什么系统/脚本上
- GPU 使用率(GPU Usage):看 GPU 每帧耗时;CPU 不忙但帧率低时常用它确认瓶颈
- 渲染(Rendering):看渲染相关统计(例如批次数、SetPass 等)
- 内存(Memory):看内存占用与 GC 分配等
- 音频(Audio)
- 视频(Video)
- 物理(Physics)
- 物理 2D(Physics 2D)
- 用户界面相关(UI)
- UI 细节(UI Details)
- 实时 GI(Realtime GI)
- 虚拟纹理(Virtual Texturing)
- 文件访问(File Access)
- 资源加载(Asset Loading)
设置(自定义布局)

点击齿轮进入模块设置,可自定义布局(例如添加自定义模块、调整显示等)。

在 模块编辑器(Profiler Module Editor)中可以创建/编辑自定义模块,并保存布局配置。
如果你把模块勾选/布局改乱了,Restore Defaults 可以一键恢复默认。
模式下拉框
目标选择

Play Mode 用于选择 Profiler 当前要分析的目标。

- 播放模式(Play Mode):分析运行时(游戏播放模式)
- 编辑模式(Edit Mode):分析编辑器侧(定位编辑器/工具性能问题)
- 定向连接(Direct Connection):输入设备/进程信息进行远程连接(常用于内网真机分析)可以选择输入运行应用程序的设备IP进行远程调试,注意:需要在发布应用程序时选择
远程分析的构建开关(发布时)

如果要分析打包后的应用,通常需要开启:
- 开发构建(Development Build)
- 自动连接(Autoconnect Profiler,可选)
- 深度分析支持(Deep Profiling Support,可选,信息更多但开销更大)
一般真机分析至少要开 开发构建(Development Build);深度分析相关选项尽量只在定位问题时临时打开。
注意:
- 如果电脑上运行着通过开发者模式构建的应用程序,在此窗口中可能会直接显示可以连接调试的本地应用程序,直接进行选择即可
- 如果移动设备通过USB线连接着电脑,下方也会显示Unity能够调试的设备
录制与跳帧

录制开关

开启后,Profiler 会持续采样并记录当前勾选模块的数据;关闭则不采样,也不会新增帧数据。
习惯上可以等到“关键操作”开始前再开录制,这样时间轴更干净。
前后移动一帧

用于逐帧查看采样结果,方便对比相邻帧差异。
跳到最新一帧(当前帧)

启用后会自动跳到最后采样到的帧,运行时始终展示最新帧数据。
如果你在回看历史帧,记得先把它关掉,不然会一直跳回最新帧。
帧数显示

Frame: 当前帧 / 总帧数:总帧数表示本次采样期间累计记录的帧数量。
清理(Clear)

清空 Profiler 当前已记录的数据。
运行时清理(Clear on Play)

启用后,在下次进入运行并连接到目标时,会自动清空旧数据,便于从“干净起点”开始采样。
深度分析(Deep Profile)

启用后会对 C# 方法进行更细粒度的采样(记录更多调用与耗时细节),但会带来明显额外开销。一般只在定位问题时短时间开启。分析器会对脚本代码的每个部分进行性能分析,并记录所有函数调用,至少包括进入任何 Unity API 中的第一个调用栈深度。
注意:此信息可用于帮助您确定代码对应用程序性能的影响,但这会带来很大的开销。一句话:它很“狠”,信息多,但也更卡。
调用栈(Call Stacks)


勾选后会记录与分配相关的调用栈信息。性能分析器记录的帧包含所选样本在完整调用栈的信息;即使在 Deep Profile 未激活的情况下,完整调用栈上的这些样本也会导致托管脚本分配,从而会对性能和GC有一定的影响。
常见项:
托管堆分配(GC.Alloc):Unity 的 托管内存分配(C# 层),会增加 GC 压力;重点关注减少堆内存分配,控制GC频率。
非托管分配(UnsafeUtility.Malloc(Persistent)):原生(非托管)内存分配函数(原生C++层)。比如图形API、DOTS系统中分配的一些内存中等常见,原生容器、底层插件、DOTS中会出现。主要关注留意资源是否释放。
任务等待(JobHandle.Complete):表示主线程阻塞等待某个 Job 完成;DOTS、ECS、Burst、Unity Physics、AnimationRigging 等系统中会出现。不常见,多线程任务系统中才会有。主要关注除非使用了多线程任务系统,否则无需关心。
开启后同样会增加开销,建议需要时再开。
读取/保存/帮助/更多

读取(Load)

把已保存的 Profiler 数据文件加载回来,便于复盘与对比。
保存(Save)

把当前采样到的 Profiler 数据保存到本地文件。
建议在抓到异常帧后就保存一份,方便之后对比或复盘。
帮助(Help)

跳转到 Unity 官方手册/帮助页面。
更多(More)

更多菜单里常用两项:
- 当前帧统计(Show Stats for ‘current frame’):是否显示当前帧的统计信息
- 偏好设置(Preferences):打开 Profiler 偏好设置
当前帧统计

偏好设置(Preferences)

常用参数建议:
最大帧数(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 启动后或进入 Play 模式时,Profiler 是否默认开始记录。建议Enabled,方便自动录制。
连接标识(Custom connection ID):用于标识设备连接的 ID,适用于远程 Profiler 连接;用于设置连接到特定设备或进程时使用的标识名。比如可以通过代码在设备端设置ID:Profiler.SetConnectionIdentifier(“MyDevice1”);然后在这里填写MyDevice1好,Unity就会优先连接这个ID的设备
Highlights 模块的目标帧率(Target Frames Per Second (Highlights Module)):Profiler 中的 Highlights 模块 会以这个帧率为基准进行性能表现分析(如掉帧)。设置为 60 表示以 60 FPS 为目标;

Target Frames Per Second (Highlights Module)用于设定高亮模块的“目标帧率”基准。建议按目标设备设置(手机常见 30/60,PC 常见 60/120)。
色盲模式(Color Blind Mode)

用于调整图表颜色显示,方便红绿色盲场景下阅读曲线与高亮信息。
4.2 知识点代码
Lesson04_Unity性能分析工具_顶部页签.cs
public class Lesson04_Unity性能分析工具_顶部页签
{
#region 知识点 Profiler窗口的顶部页签
/*
* 主要目标:
* 1. 了解 Profiler 顶部页签中每一部分的作用
* 2. 着重记忆(记录)重要参数含义
*/
#endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com