4.Profiler窗口顶部页签

4.Unity性能分析工具-顶部页签


4.1 知识点

主要目标

  • 了解:Profiler 顶部页签中每一部分的作用
  • 记录:常用参数的含义与使用场景

主要目标就是把顶部这条工具栏“认全”。后面你分析卡顿、掉帧、内存波动,基本都会回到这几个入口来回切。

顶部页签总览

从左到右(图中 1~9):

  1. 模块选择(Profiler Modules)
  2. 分析目标(Play Mode)
  3. 录制与跳帧
  4. 帧数显示
  5. 清理(Clear)
  6. 运行时清理(Clear on Play)
  7. 深度分析(Deep Profile)
  8. 调用栈(Call Stacks)
  9. 读取/保存/帮助/更多

模块选择(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);深度分析相关选项尽量只在定位问题时临时打开。

注意:

  1. 如果电脑上运行着通过开发者模式构建的应用程序,在此窗口中可能会直接显示可以连接调试的本地应用程序,直接进行选择即可
  2. 如果移动设备通过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

×

喜欢就点赞,疼爱就打赏