跳到主要内容

项目优化:Unity Profiler 使用

这篇笔记整理了 Unity 自带性能分析工具 Profiler 的基础用法, 包括如何打开窗口、常用分析模块(CPU、GPU、Memory、Rendering)能看什么, 以及如何通过 Timeline 和 Hierarchy 视图来定位项目中的性能瓶颈。

适用场景:项目需要做 整体性能体检,或已经出现卡顿、帧率不稳定等问题时。


一、打开方式

菜单路径:Window → Analysis → Profiler

Profiler 菜单入口

打开窗口后你可以:

  • 直接在 Editor 中运行游戏并观察实时曲线;
  • 也可以通过顶部的下拉列表连接真机或其他运行中的 Player。

当连接成功时,上方会开始滚动显示每一帧的采样结果。


二、常用模块总览

Profiler 顶部的下拉栏中可以勾选要查看的模块,例如:

  • CPU Usage:脚本、渲染、物理、GC 等占用;
  • GPU Usage:GPU 渲染阶段耗时;
  • Memory:内存分配情况(贴图、Mesh、音频、GC 堆等);
  • Rendering:批次、SetPass、DrawCall 等渲染相关指标。

你可以通过 Modules 面板勾选 / 取消某些模块,这样能专注在当前需要分析的部分。


三、CPU 模块:找出最耗时的逻辑

CPU Usage 模块示例

CPU Usage 中,曲线会按类别分色显示,例如:

  • Rendering(渲染)
  • Scripts(脚本)
  • Physics(物理)
  • Garbage Collector(GC)
  • UI、Global Illumination、Others 等

常见用法:

  1. 在曲线区点击一帧,锁定这帧的采样数据;
  2. 通过底部的 TimelineHierarchy 观察这帧的详细结构;
  3. 关注耗时最高的几个函数或系统,作为第一批优化目标。

如果看到 GC Alloc 持续在非零波动,说明每帧都有新的托管内存分配, 需要检查是否有频繁 new、闭包捕获或 string 拼接等。


四、GPU、Memory、Rendering 模块要点

1. GPU Usage

GPU 模块会展示各个渲染阶段(如 Shadows、Opaque、Transparent 等)的耗时分布。

用途:

  • 判断卡顿是否主要由 GPU 过载引起;
  • 结合 Rendering 模块,分析是否是过多的像素填充、过度复杂的 Shader 等问题。

2. Memory

Memory 模块提供整体内存占用趋势,适合快速确认:

  • GC 堆是否在不断变大;
  • 贴图、Mesh、音频资源是否异常增长;
  • 是否存在加载后未释放的场景或资源。

如果需要更细粒度分析,可以配合 Memory Profiler 包使用。

3. Rendering

Rendering 模块重点关注:

  • Batches / SetPass Calls / Draw Calls;
  • 渲染对象数、动态批处理、SRP Batcher 的启用情况;
  • 是否存在某一帧骤增的渲染调用。

这些信息有助于判断需要从 合批、LOD、裁剪、减少 overdraw 等方向入手。


五、Timeline 与 Hierarchy:深入具体帧

在 Profiler 底部区域,可以在 TimelineHierarchy 两种视图间切换:

1. Timeline 视图

在 Timeline 中,一帧会被拆分为一条条横向的「小条」,每条代表一个系统或函数的执行片段:

  • 横向长度代表耗时;
  • 嵌套结构可以清晰看到调用层级;
  • 鼠标悬停可查看该片段的详细信息(耗时、调用次数等)。

常用技巧:

  • 选中 CPU Usage 中波峰较高的一帧,然后切到 Timeline;
  • 看哪一段条形区域特别长(例如 Scripts、Physics 等), 再展开逐级寻找最耗时的函数。

2. Hierarchy 视图

Hierarchy 会以树形列表展示当前帧的采样:

  • 可以按「总耗时」「自身耗时」排序;
  • 方便找到最耗时的函数或模块;
  • 展开节点可以看到函数调用链。

典型流程是:Timeline 决定看哪一块,Hierarchy 找出具体是谁慢。


六、实践建议

  • 做性能优化时,先用 Profiler 观察一段「真实玩法」过程,记录多个峰值帧;
  • 优先关注「持续占据较高耗时」的模块,而不是偶尔的单帧尖刺;
  • 找到瓶颈后,针对性地在对应系统(脚本、渲染、内存)做实验和改动;
  • 优化之后,再用同样的测试流程跑一遍 Profiler,对比优化前后的帧时间变化。

Profiler 是 Unity 项目优化中最基础而又最重要的工具之一。 熟练掌握它的各个模块与视图,可以在后期节省大量「猜问题」的时间。


版权声明:本文最初发布于 CSDN「uniGame」,遵循 CC 4.0 BY-SA 协议,转载请附上原文链接及本声明。
原文链接:https://blog.csdn.net/alla_Candy/article/details/133344430