目录

一、Profiler 打开方式(附代码注释)

二、两种 Profiler 核心区别(避坑关键)

三、Profiler 顶部页签功能全解析

1. 基础设置与布局

2. 录制与数据控制

3. 数据保存与读取

4. 关键参数与统计显示

5. 额外注意点

四、学习目标与实战建议


作为 Unity 性能分析的核心工具,Profiler 是排查卡顿、内存泄漏等问题的关键。本文结合实战代码与工具面板拆解,从基础操作到核心功能,帮你快速上手 Profiler 使用!

一、Profiler 打开方式(附代码注释)

Profiler 有两种打开路径,可直接通过 Unity 编辑器菜单操作,对应代码中已标注关键说明:

using UnityEngine;
public class Lesson1 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 知道如何打开性能分析器窗口
        // 两种打开路径,按需选择:
        // 1. Window——>Analysis——>Profiler(内嵌版)
        // 2. Window——>Analysis——>Profiler(Standalone Process)(独立进程版)
        #endregion
    }

    void Update()
    {
        
    }
}

二、两种 Profiler 核心区别(避坑关键)

两种 Profiler 用法,其实核心差异在于「是否干扰游戏性能」,具体对比如下:

特性 Profiler(内嵌版) Profiler(Standalone Process 独立版)
运行环境 属于 Unity Editor 进程 独立进程运行
性能干扰 有一定干扰(深度采样 / 低端设备更明显) 最大限度减少干扰,数据更真实
适用场景 日常开发调试、小项目、局部功能分析 复杂场景、大型项目、真机性能精准测试
核心优势 打开便捷,无需额外进程 测试结果可靠,避免工具自身占用性能资源

三、Profiler 顶部页签功能全解析

顶部页签可分为「模块选择」「布局设置」「目标选择」「录制控制」「参数配置」5 大板块,以下是详细拆解:

1. 模块列表(自定义分析维度)

在顶部页签最左侧,可勾选需要分析的子系统模块,按需聚焦性能数据:

  • Highlights:高亮显示存在问题的模块
  • CPU Usage:CPU 使用率
  • GPU Usage:GPU 使用率
  • Rendering:渲染相关
  • Memory:内存相关
  • Audio:音效相关
  • Physics:物理相关
  • Physics 2D:2D 物理相关
  • Video:视频播放相关
  • UI:用户界面相关
  • UI Details:UI 详细信息
  • Realtime GI:实时光照相关
  • Virtual Texturing:虚拟纹理
  • File Accessing:文件访问
  • Asset Loading:资源加载

2. 布局与目标设置

这部分是分析前的基础配置,决定了工具的运行环境和展示形式:

  • 自定义布局:点击「+」可添加子系统分析模块,自由调整面板展示内容
  • Restore Defaults:恢复 Profiler 默认布局,避免误操作后无法恢复
  • 目标选择(下拉菜单):选择分析对象,支持 3 种模式:
    • Play Mode:对当前 Unity 编辑器内的运行游戏分析
    • Edit Mode:对 Unity 编辑器自身进行分析
    • Direct Connection:远程连接真机 / 其他设备(需处于同一内网)
  • 关键选项
    • Development Build:需勾选,才能在真机上运行开发模式的应用
    • Autoconnect Profiler:自动连接 Profiler(可选)
    • Deep Profiling Support:深度分析支持(可选,能获取更多调用栈信息)

3. 录制与数据控制(核心操作)

这部分是采集性能数据的关键按钮,需熟练掌握:

  • 录制按钮:启用后,在应用运行时记录各模块性能数据;禁用则停止记录
  • 数据控制按钮
    • 「前进 / 后退一帧」:逐帧查看采集的性能数据
    • 「跳转到末尾」:录制结束后,自动定位到最后一帧
  • Frame 计数:显示当前帧 / 总帧数(Profiler 采集的总数据量)
  • Clear:清空 Profiler 窗口所有历史数据,避免旧数据干扰
  • Deep Profile:深度性能分析(仅 C#),会记录代码中每个 API 的调用栈,但会增加性能开销,建议按需开启

4. 调用栈与核心参数

在顶部页签下方,可查看关键性能指标的调用栈信息,定位代码级问题:

  • Call Stacks(调用栈):展开后显示 3 类核心参数:
    1. GC.Alloc:Unity 托管内存分配(C# 层),数值过高会触发 GC,需减少分配
    2. UnsafeUtility.Malloc(Persistent):原生(非托管)内存分配(C++ 层),多出现于 DOTS 系统,需关注是否泄漏
    3. JobHandle.Complete:主线程等待多线程 Job 完成(仅 DOTS/ECS 等多线程系统中出现,未使用则无需关注)

5. 数据管理与偏好设置

这部分用于保存 / 读取数据、调整工具默认行为:

  • 数据管理
    • 「读取」:导入已保存的性能分析数据
    • 「保存」:导出当前采集的性能数据
    • 「帮助」:跳转到 Unity 官方 Profiler 手册
  • 偏好设置(Preferences)
    • Show stats for 'current' frame:显示当前录制帧的统计信息
    • Frame Count:Profiler 可保存的最大帧数(建议设 500+,方便查看历史数据)
    • Default recording state:Unity 进入 Play 模式后,Profiler 是否自动录制
    • Target Frames Per Second(Highlights Module):Highlights 模块的目标帧率(如手机设 30/60,PC 设 60/120),低于该值会高亮显示

四、学习目标与实战建议

  1. 先熟练掌握两种 Profiler 的切换使用,根据项目阶段选择合适的分析方式
  2. 牢记顶部页签核心功能,尤其是「录制 - 保存 - 读取」和「目标选择」,避免因操作不当导致数据无效
  3. 后续学习重点:结合具体模块(CPU、GPU、内存),通过顶部页签定位异常参数,关联代码排查问题

建议搭配真机测试练习,通过实际项目录制数据,熟悉各参数在正常 / 异常场景下的差异,逐步建立性能分析思维~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐