目录
一. 简介
二. 打开分析器
1. 打开
2.在目标平台上分析应用程序
三. 分析分析器
四. 模块详细介绍
1.Asset Loading Profiler 模块
2.Audio Profiler 模块
3.CPU Usage Profiler 模块
4.File Access Profiler 模块
5.Global Illumination Profiler 模块
6.GPU Usage Profiler 模块
7.Memory Profiler 模块
8.Physics Profiler 模块
9.Physics 2D Profiler 模块
10.Rendering Profiler 模块
11.UI 和 UI 详细信息探查器
12.Video Profiler 模块
13.Virtual Texturing Profiler 模块
五. 总结
一. 简介
在 Unity 中,性能分析器(Profiler)是一个非常强大的工具,用于分析和优化游戏的性能。以下是关于 Unity 性能分析器的一些重要信息:
1、作用
检测性能瓶颈
- 可以帮助你确定游戏在运行时哪些部分消耗了大量的资源,如 CPU、GPU、内存等。通过分析这些数据,你可以找出性能瓶颈所在,并针对性地进行优化。
- 例如,如果发现 CPU 使用率过高,可能是某个脚本的计算过于复杂或者频繁调用导致的;如果 GPU 使用率过高,可能是过多的复杂材质、高分辨率纹理或者大量的渲染批次等原因引起的。
优化游戏性能
- 性能分析器提供了详细的性能数据,使你能够了解游戏的各个方面的性能表现。你可以根据这些数据进行优化,提高游戏的帧率和响应速度。
- 比如,通过减少不必要的渲染操作、优化脚本逻辑、降低纹理分辨率等方式来降低资源消耗,提高游戏性能。
实时监测
- 在游戏运行过程中,性能分析器可以实时显示各种性能指标,让你可以随时观察游戏的性能变化。这对于在开发过程中快速发现和解决性能问题非常有帮助。
2、注意事项
性能分析应在实际设备上进行
- 虽然在编辑器中可以使用性能分析器进行初步分析,但为了获得更准确的性能数据,最好在实际的目标设备上进行性能分析。不同的设备可能有不同的性能特点和限制,因此在实际设备上进行测试可以更好地了解游戏在真实环境中的性能表现。
结合其他工具进行分析
- 性能分析器只是一个工具,有时候还需要结合其他工具来全面了解游戏的性能。例如,可以使用 GPU 分析工具来深入了解 GPU 的性能问题,或者使用内存分析工具来检查内存泄漏等问题。
持续优化
- 性能优化是一个持续的过程,随着游戏的开发和更新,可能会出现新的性能问题。因此,定期使用性能分析器进行性能监测和优化是很重要的,以确保游戏始终保持良好的性能。
二. 打开分析器
1. 打开
窗口 -> 分析 -> 分析器
页面展示
2.在目标平台上分析应用程序
在构建设置页面,勾选上开发构建,再勾选上自动连接探查器.
启用 自动连接探查器 设置后,Unity 编辑器会在构建过程中将其 IP 地址烘焙到构建的播放器中。当您启动播放器时,它会尝试连接到位于烘焙 IP 地址的编辑器中的分析器。
如果另外启用 深度分析迟滞 设置,Unity 将在构建的 Player 启动时执行 深度分析,这意味着 Profiler 会分析代码的每个部分,而不仅仅是明确包装在 性能分析标记 中的代码计时。这对于获取有关应用程序启动时间的深度分析信息非常有用,但是,这会给您的构建增加少量开销
启动游戏的时候,就会自动连接上分析器.
也可以通过 IP 地址连接到设备.
网页版也可以
选择输入IP
就可以了.
ps: 我是另起了一个服务,就可以了.注意ip地址
三. 分析分析器
选择运行模式
启动unity编辑器,就可以看到
性能分析器模块
Profiler 模块 | 功能 |
---|---|
CPU 使用率 | 显示应用程序在物理、脚本、动画和垃圾回收等领域花费最多时间的概述。此模块包含有关应用程序的广泛分析信息,您可以使用它来决定使用哪些其他模块来调查应用程序中的更具体问题。即使您关闭此模块,它也始终处于活动状态。 |
GPU 使用情况 | 显示与图形处理相关的信息。默认情况下,此模块不处于活动状态,因为它具有很高的开销。 |
渲染 | 显示有关 Unity 如何在应用程序中呈现图形的信息,包括有关静态和动态批处理 、SetPass 和 Draw 调用、三角形和顶点。 |
记忆 | 显示有关 Unity 如何在应用程序中分配内存的信息。这对于查看脚本分配 (GC.Alloc) 导致垃圾回收,或者您的应用程序的资产内存使用量如何随时间变化。 |
音频 | 显示与应用程序中的音频相关的信息,例如时间和数量音频源 play,音频系统需要多少 CPU 使用率,以及 Unity 为其分配多少内存。 |
视频 | 在应用程序中显示与视频相关的信息。 |
物理 | 显示有关应用程序中的物理场的信息,该物理场物理引擎 已处理。 |
物理 (2D) | 与 Physics Profiler 模块类似,此模块显示有关物理引擎在应用程序中处理 2D 物理的位置的信息。 |
用户界面 | 显示有关 Unity 如何处理应用程序的 UI 批处理的信息,包括 Unity 批处理项的原因和方式。 |
UI 详细信息 | 与 UI 模块类似,此模块的图表添加了有关批处理和顶点计数的数据,以及包含触发 UI 更改的用户输入事件信息的标记 |
全局照明 | 显示有关 Unity 在应用程序中的 Global Illumination 照明子系统上花费的 CPU 资源的信息。 |
虚拟纹理 | 显示有关应用程序中流式虚拟纹理的统计信息。 |
资产加载 | 显示有关应用程序如何加载资源的信息。 |
文件访问 | 显示有关应用程序中的文件访问的信息。 |
四. 模块详细介绍
首先启动全部模块
1.Asset Loading Profiler 模块
资产加载分析器
模块显示有关应用程序如何加载资产的信息,包括按区域划分的读取操作细分。详细信息窗格提供了对在配置文件期间捕获的每个资产加载标记的见解。
图表 | 描述 |
---|---|
其他读物 | 从未指定子系统的 AsyncReadManager 请求的字节数。 |
纹理读取 | 从 AsyncReadManager 请求的用于纹理加载的字节数。 |
虚拟纹理读取 | 从 AsyncReadManager 请求的字节数,用于虚拟纹理。 |
网格读取 | 从 AsyncReadManager 请求的字节数网孔 负荷。 |
音频朗读 | 从 AsyncReadManager 请求的用于音频加载的字节数。 |
脚本读取 | 通过脚本 API 从 AsyncReadManager 请求的字节数。 |
实体读取 | 从 AsyncReadManager 请求的字节数脚本 在 Entities 包中。 |
2.Audio Profiler 模块
音频分析器
模块监控应用程序中音频系统的性能,例如总负载和语音计数
简单视图的详细信息表
数据 | 描述 |
---|---|
音频源总数 | 总数音频源 在场景中。 |
播放音频源 | 场景中播放的音频源总数 |
暂停的音频源 | 场景中暂停的音频源的总数。 |
音频剪辑计数 | 总数音频剪辑 在场景中。 |
音频语音 | 项目使用的音频通道(FMOD 通道)总数。 |
音频 CPU 总数 | 音频使用的 CPU 总量。 |
DSP 中央处理器 | 您的项目通过混合使用的 CPU 量,音频效果 ,以及解压缩具有“内存中压缩”加载类型的非流式声音。这不包括 Unity 在后台解码的声音所需的 CPU,其加载类型为“加载时解压缩”,并选中了“加载在后台”标志。 |
流式 CPU | 项目用于在应用程序中流式传输音频的 CPU 量。 |
其他 CPU | 上述未涵盖的一般 CPU 开销。 |
总音频内存 | 音频在项目中使用的内存量。 |
流文件内存 | 加载类型为“流式处理”的音频文件在逐步从磁盘读取压缩音频数据时用于短期缓冲的内存量。 |
流式解码内存 | 加载类型为 Streaming 的音频文件用于缓冲解码的样本流的内存量。 |
样本声音记忆 | 加载类型为“卸载时解压缩”的音频文件用于解压缩的样本数据的内存量。 注意:Unity 会汇集音频系统分配的内存,并且它会不断增长,直到在应用程序的运行时间内达到饱和。音频系统在内部重用分配的内存,该内存在运行时无法压缩。 |
其他内存 | 由音频系统中的各种子系统引起的开销。 |
3.CPU Usage Profiler 模块
类别 | 描述 |
---|---|
渲染 | 应用程序在渲染图形上花费的时间。 |
脚本 | 应用程序在运行脚本上花费的时间。 |
物理 | 您的应用程序在物理引擎 . |
动画 | 应用程序在对 Skinned 进行动画处理上花费的时间网孔 渲染器,游戏对象 以及应用程序中的其他组件。这还包括花在系统计算上的时间:动画和Animator 组件 用。 |
垃圾收集器 | 应用程序在运行垃圾回收器上花费的时间。 |
VSync的 | 应用程序每帧等待 targetFrameRate 或下一个帧所花费的时间VBlank 以同步。这是根据 QualitySettings.vSyncCount 值、目标帧速率或 VSync 设置得出的,该设置是运行应用程序的平台的默认或强制最大值。有关 VSync 的详细信息,请参阅本文档中有关呈现和 VSync 示例的部分。 |
全局照明 | 应用程序在照明上花费的时间。 |
用户界面 | 应用程序在显示其 UI 上花费的时间。 |
别人 | 应用程序在不属于任何其他类别的代码上花费了多少时间。这包括整个 EditorLoop 等区域,或者在编辑器中分析播放模式时的分析开销。 |
4.File Access Profiler 模块
文件访问分析器
模块显示有关应用程序中文件活动的信息,
图表 | 描述 |
---|---|
打开的文件 | 此帧在本地文件系统中成功打开的文件总数。 |
已关闭的文件 | 此帧中成功关闭的本地文件系统中的文件总数。 |
文件查找 | 在此帧的本地文件系统中执行的文件查找操作数。文件查找操作涉及对文件内容的搜索。 |
飞行中读取 | 在此帧期间正在进行的读取操作总数。 |
文件句柄打开 | 在此帧期间任何时间保持打开状态的文件句柄总数。这包括 Unity 在同一帧内打开和关闭的文件。 |
5.Global Illumination Profiler 模块
Global Illumination Profiler 模块的图表跟踪全局照明子系统在所有工作线程上花费的时间。
图表 | 描述 |
---|---|
光探针 | 更新所花费的时间光照探针 . |
设置 | 在设置阶段花费的时间。 |
环境 | 处理环境照明所花费的时间。 |
输入照明 | 处理输入照明所花费的时间。 |
系统 | 更新系统所花费的时间。 |
解决任务 | 运行光能传递求解器任务所花费的时间。 |
动态对象 | 更新动态所花费的时间游戏对象 . |
其他命令 | 更新其他命令所花费的时间。 |
阻止命令写入 | 在阻止状态下等待命令缓冲区所花费的时间。 |
6.GPU Usage Profiler 模块
显示应用程序在 GPU 中花费时间的位置。
图表类别 | 描述 |
---|---|
不透明 | 内置渲染管线渲染不透明对象的时间 |
透明 | 内置渲染管线渲染透明对象的时间 |
阴影/深度 | 内置渲染管线渲染阴影贴图的时间 |
延迟照明 | 内置延迟渲染管线的光照时间。 |
后处理 | 内置渲染管线处理后处理效果的时间。 |
其他 | 处理其他事情(例如可编写脚本的渲染管道)的渲染时间 |
7.Memory Profiler 模块
分析应用程序中的内存使用情况
类别 | 描述 |
---|---|
分配总数 | 应用程序已使用的总内存。 |
纹理记忆 | 有多少内存纹理 在您的应用程序中已经使用过。 |
网孔 记忆 | 应用程序中的网络使用了多少内存。 |
材料计数 | 的数量材料 应用程序中的实例。 |
对象计数 | 应用程序中的本机对象实例数。 |
GC 已用内存 | GC 堆已使用的内存量。 |
在帧中分配的 GC | GC 堆上每帧分配的内存量。 |
8.Physics Profiler 模块
显示有关物理系统在项目的数据
图表 | 功能 |
---|---|
物理 使用的内存 | 物理模块已使用的内存总量 |
主动动力体 | 的数量刚体 组件和 ArticulationBody 未处于睡眠状态的组件。 |
主动运动体 | 活动运动刚体组件的数量。当在帧中调用 MovePosition 或 MoveRotation 时,运动学刚体处于活动状态,并在下一帧中保持活动状态。 注意:Unity 可能会处理每帧多次连接关节的运动学刚体组件,这有助于显示值。 |
动态体 | “刚体”(Rigidbody) 组件和“关节体”(ArticulationBody) 组件的数量。 |
重叠 | 重叠事件的数量。重叠事件是当对撞机 彼此重叠。 |
触发器重叠 | 与触发器碰撞体的重叠事件数(成对计数)。 |
离散重叠 | Unity 使用离散的重叠事件数碰撞 检测解决。 |
连续重叠 | Unity 连续使用的重叠事件数碰撞检测 来解决。 |
物理查询 | 物理查询的总量,例如光线投射和形状投射。 |
9.Physics 2D Profiler 模块
显示有关2D物理系统在项目的数据
图表 | 描述 |
---|---|
联系人总数 | 此帧中存在的联系人总数。这包括两者碰撞 和触发触点。处理和解决联系人可能很耗时,因此应将其保持在最低限度。 |
形状总数 | 此帧中存在的物理形状的总数。不同的 Collider2D 产生不同数量的物理形状,范围从一种到无限种。您可以获取形状计数并检索物理形状,以确定任何 Collider2D 的形状。 |
查询总数 | 称为此帧的查询总数。这包括 Physics2D.Raycast、Physics2D.OverlapPoint 等查询。 |
回调总数 | 在此帧中调用的 OnCollisionEnter2D、OnCollisionStay2D、OnCollisionExit2D、OnTriggerEnter2D、OnTriggerStay2D 和 OnTriggerExit2D 回调的总数。 |
总关节 | 此帧中存在的任何 Joint2D 的总数。 |
全身 | 此帧中存在的 Rigidbody2D 的总数。 |
清醒的身体 | 在此帧中处于唤醒状态(未处于睡眠状态)且存在的 Rigidbody2D 的总数。 |
动态体 | 具有动态的 Rigidbody2D 的总数 体型 出现在这个框架中。在所有身体类型中,动态身体需要最多的处理,因此它们应该保持在最低限度。 |
连续体 | 具有连续的 Rigidbody2D 的总数 碰撞检测 此帧中存在的模式。连续体比使用时要贵得多离散碰撞检测 模式,因此它们应保持在最低限度。 |
物理 使用的内存 | 2D 物理系统独占使用的持久内存总量。这包括核心引擎和每个物理组件使用的内存,但不包括此帧中使用的临时内存。 |
10.Rendering Profiler 模块
效果图分析器显示渲染统计信息以及有关 CPU 和 GPU 执行哪些操作
图表 | 描述 |
---|---|
批次计数 | Unity 在一帧期间处理的批次数。 |
SetPass 调用计数 | Unity 切换着色 传递它用于渲染游戏对象 在一帧中。着色器可能包含多个着色器通道,每个通道都会以不同的方式呈现场景中的游戏对象。 |
三角形计数 | Unity 在一帧期间处理的三角形数。 |
顶点计数 | Unity 在帧期间处理的顶点数。 |
11.UI 和 UI 详细信息探查器
这用户界面和 UI 详细信息分析器模块提供有关 Unity 在应用程序中布局和渲染用户界面所花费的时间和资源的信息。
图表 | 描述 | |
---|---|---|
UI Profiler 模块 | ||
布局 | Unity 在执行 UI 的布局通道时花费了多少时间。这包括由 HorizontalLayoutGroup、VerticalLayoutGroup 和 GridLayoutGroup 完成的计算。 | |
呈现 | UI 在执行其渲染部分时花费了多少时间。这是直接渲染到图形设备或渲染到主渲染队列的成本。 | |
UI 详细信息配置文件模块 | ||
批次 | 显示一起批处理的绘制调用总数。 | |
顶点 | 用于呈现 UI 部分的顶点总数。 | |
标记 | 显示事件标记。当用户与 UI 交互(例如,单击按钮或滑块值更改)时,Unity 会记录标记,然后将它们绘制为图表上的垂直线和标签。 |
12.Video Profiler 模块
视频分析器
模块显示有关应用程序中的视频正在使用的资源的信息,例如内存、缓冲和视频剪辑数量
图表 | 描述 |
---|---|
视频源总数 | 您的视频源总数现场 . |
播放视频源 | 场景中播放的视频源的数量。 |
预缓冲帧 | 预缓冲帧的总数。 |
总视频内存 | 应用程序中的视频正在使用的系统内存量。 |
13.Virtual Texturing Profiler 模块
虚拟纹理分析器模块显示有关应用程序中流式虚拟纹理的统计信息
图表 | 描述 |
---|---|
必需的磁贴 | 屏幕上可见的纹理图块的数量。这些是着色 尝试进行采样以渲染选定的帧。 |
最大缓存 Mip 偏置 | 自动 mipmap 偏差应用于具有相同纹理的所有纹理纹理格式 .如果此值不为零,则缓存的大小不足以容纳该格式的所有可见切片。mipmap 偏差越高,纹理质量越低。 |
最大缓存需求 | 选定帧中所有 GPU 缓存的最高缓存需求。 |
缺少流式处理磁贴 | 在屏幕上可见但不在视频内存中的图块数。您的应用程序会从磁盘流式传输这些磁贴,或者尽快从主内存中复制它们。 |
丢失磁盘数据 | 应用程序需要从磁盘读取的剩余数据(以字节为单位)以满足所选帧的要求。 |
五. 总结
以上就分析模块的介绍,想看更详细的建议去官网.