unity 性能分析工具 --Profiler

一, 概述:

  profiler 可以让你查看在游戏各方面花费的时间,分析GPU,CPU和内存,渲染和音频的性能。 

使用时要关注消耗时间最多的部分 ,比较代码更改前后的分析结果,但是会影响帧率。

二,窗口信息    打开方式:Windows-profiler

unity 性能分析工具 --Profiler_第1张图片

  当游戏运行且探查器正在收集数据时,单击任何这些传输控件会暂停游戏,"current"传输按钮使配置文件统计窗口显示实时收集的数据,ctive Profiler弹出菜单允许您选择是在编辑器中还是在单独的播放器中进行性能分析(例如,在连接的移动设备上运行的游戏),load 按钮读取先前保存的数据。还可以加载播放器写出的二进制配置文件数据(生成日志时,设置Profiler.enableBinaryLog启用二进制格式)。如果在按下shift按钮时单击“Load”,则文件内容将附加到内存中的当前配置文件帧。save 按钮可以将录制的帧写入文件

 1,深度剖析

 打开深度剖析将分析所有脚本代码 - 即记录所有函数调用。这有助于了解游戏代码中的确切时间,但会产生很大的开销和占用大量的内存,因此运行速度会明显变慢。对于大型游戏,深度剖析可能会导致Unity耗尽内存,因此可能无法进行深度剖析。手动分析脚本代码块的开销比使用深层分析要小。使用Profiler.BeginSample和Profiler.EndSample脚本函数来启用和禁用代码段周围的分析

2,synctime 

 当以固定帧速率运行或与垂直空白同步运行时,Unity会在“等待目标FPS ”中记录等待时间, “。默认情况下,探测器中不显示此时间量。要查看等待的时间,可以切换“View SyncTime”。这也可以衡量在丢帧之前的净空高度

3,时间轴

运行游戏时,每帧都会记录数据,并显示最近几百帧的历史记录。单击特定框架将在窗口的下半部分显示其详细信息。根据时间线.时间轴的垂直刻度会自动管理,并尝试填充窗口的垂直空间.显示不同的详细信息,这些区域当前已选中.时间轴包含几个方面:CPU使用率,渲染和内存。单击面板中的关闭按钮可以删除这些区域,然后使用“Profile Controls”栏中的“ Add Area”下拉列表重新添加这些区域

三,CPU Usage分析

unity 性能分析工具 --Profiler_第2张图片

 查看游戏中花费的时间。下方窗格将显示所选帧的分层时间数据

  • Hierarchy :显示分层时间数据。
  • Group Hierarchy :将时间数据分组为逻辑组(例如“渲染”,“物理”,“脚本”)。由于任何组的子项也可以位于不同的组中(例如,某些脚本也可能调用呈现函数),因此组时间的百分比通常总计超过100%。

 下部窗格中选择项目时,将突出显示其对CPU图表的贡献(其余部分将变暗)再次单击某个项目将取消选择该项目

  Self列指的是在特定函数中花费的时间量,不包括调用子函数所花费的时间(例如1.9%的时间花在了Camera.Render功能上。此函数在框架中执行一些操作并调用各种绘图和剔除功能。排除所有这些功能,只有0.4%的时间花在Camera.Render功能本身上。)

下面的描述简要介绍了各种高级Physics Profiler标记的含义。

  • Physics.Simulate:来自FixedUpdate。这通过指示物理引擎
    更新物理的当前状态,(PhysX)以运行其模拟。
  • Physics.Processing:来自FixedUpdate。这是处理所有非布料物理作业的地方。扩展此标记显示物理引擎内部完成的工作的低级细节。
  • Physics.ProcessingCloth:来自FixedUpdate。这是处理所有布料物理作业的地方。扩展此标记将显示物理引擎内部完成的工作的低级细节。
  • Physics.FetchResults:从中调用FixedUpdate。这是从物理引擎收集物理模拟结果的地方。
  • Physics.UpdateBodies:来自FixedUpdate。这是所有物理实体更新其位置和旋转以及发送传递这些更新的消息的位置。
  • Physics.ProcessReports:来自FixedUpdate。这个阶段在物理学FixedUpdate结束后运行,并且处理响应模拟结果的所有各个阶段。触点,关节
    断点和触发器已更新并在此处发送消息。有四个不同的子阶段:
    • Physics.TriggerEnterExits:来自FixedUpdate。这是处理的地点OnTriggerEnterOnTriggerExit事件。
    • Physics.TriggerStays:来自FixedUpdate。这是OnTriggerStay处理事件的地方。
    • Physics.Contacts:来自FixedUpdate。这就是OnCollisionEnterOnCollisionExitOnCollisionStay事件处理。
    • Physics.JointBreaks:来自FixedUpdate。这是处理与被破坏的关节有关的更新和消息的地方。
  • Physics.UpdateCloth:来自Update。这是与布料及其蒙皮网格相关的更新。
  • 物理。插值
    来自Update。此阶段处理所有物理对象的位置和旋转的插值。
  • Profiler可以检测到的具体问题是:

  • Rigidbody.SetKinematic [为刚体重新创建非凸MeshCollider]
  • Animation.DestroyAnimationClip [触发器RebuildInternalState]
  • Animation.AddClip [触发RebuildInternalState]
  • Animation.RemoveClip [Triggers RebuildInternalState]
  • Animation.Clone [触发RebuildInternalState]
  • Animation.Deactivate [Triggers RebuildInternalState]

 

Rendering Profiler
显示渲染统计的时间线  批次数,SetPass调用数,三角形和顶点数。

更多信息请访问unity官网  https://docs.unity3d.com/Manual/Profiler.html

你可能感兴趣的:(知识点,unity,优化)