Unity Profiler概述及Profiler window 说明

文章内容主要翻译自 官方文档Profiler overview
内容翻译主要以机器翻译为主,有翻译错误的地方大家留言我可以及时更正

Profiler概述

Unity Profiler窗口可帮助您优化您的游戏。它会为您报告在游戏的各个区域花了多少时间。例如,它可以报告渲染,动画或游戏逻辑的时间百分比。

您可以分析GPU,CPU,内存,渲染和音频的性能。

要查看性能分析数据,请在编辑器中使用性能分析功能玩游戏,并记录性能数据。分析器窗口然后在时间轴上显示数据,因此您可以看到尖峰(需要更多时间)的帧或区域。通过点击时间线中的任何位置,Profiler窗口的底部将显示所选帧的详细信息。

请注意,性能分析必须测试您的代码(即:添加一些说明以方便检查)。虽然这对游戏的性能影响很小,但开销足够小,不会影响游戏帧率。

有关使用该工具的提示

在使用分析工具时,应关注消耗最多时间的游戏部分。比较代码更改前后的分析结果,并确定您测量的改进。有时您为改善性能所做的更改可能会对帧速率产生负面影响; 您的代码优化可能会有意想不到的后果。

有关Profiler窗口的详细信息,请参阅Profiler窗口文档。

另请参阅:优化图形性能

Profiler窗口

通过工具栏访问Unity编辑器中的Profiler窗口:Window > Profiler

请参阅Profiler概述,了解Profiler的工作原理。


Profiler控件位于窗口顶部的工具栏中。使用这些来打开和关闭仿形,并通过异形框架导航。传输控件位于工具栏的最右端。注意,当游戏运行时,探查器正在收集数据,点击其中的任何一个传输控件暂停游戏。控件进入第一个记录帧,第一帧后退,第一帧向前,最后一帧。

  • 添加要显示数据的模块 ,已经添加的为灰色
  • ** 在Editor模式下的性能消耗数据,不需要运行**


  • 连接真机上的选项
  • 清除 载入 保存 对应的日志

Profiler不保存所有记录的帧,所以第一帧的概念实际上应该是仍然保存在内存中的最老的框架。“当前”传输按钮使配置文件统计窗口显示实时收集的数据。活动分析器弹出菜单允许您选择是否应该在编辑器或单独的播放器中进行分析(例如,在附加的iOS设备上运行的游戏)。保存按钮允许您将录制的帧写入文件。相应地,加载按钮读取较早保存的数据。你也可以加载二进制文件数据写入由球员(当生成日志,设置Profiler.enableBinaryLog使二进制格式)。如果按下Shift按钮时单击“加载”,则将文件内容附加到内存中当前概要文件帧中。

  • 逐帧调整面板

深度分析

当打开Deep Profile时,所有的脚本代码都被定义了—也就是说,所有函数调用都被记录下来。这是有用的知道确切的时间花费在你的游戏代码。

请注意,深度剖析会产生非常大的开销,占用大量内存,因此,在进行分析时,您的游戏运行速度会大大减慢。如果您使用的是复杂的脚本代码,可能根本无法进行深度剖析。对于简单脚本的小游戏,深度剖析应该足够快。如果您发现对整个游戏的深度剖析会导致帧速率下降,以至于游戏几乎不能运行,则应该考虑不使用此方法,而使用下面描述的方法。当您设计游戏并决定如何最佳实现关键特性时,您可能会发现深度剖析更有帮助。注意,对于大型游戏,深度剖析可能会导致Unity耗尽内存,因此,深度剖析可能是不可能的。

手动分析脚本代码块的开销比使用深度分析的开销小。使用Profiler.BeginSampleProfiler.EndSample脚本函数来启用和禁用代码段的分析

查看同步时间(View SyncTime)

在一个固定的帧率或带垂直空白同步运行时,Unity的记录等待时间”等目标FPS”。默认情况下,分析器中没有显示此时间量。查看有多少时间花在等待,你可以切换“查看同步时间”。这也是一个衡量你有多少净空高度之前失去帧。

分析器时间轴(Profiler Timeline)

Profiler窗口的上部显示时间的性能数据。当你运行一个游戏时,每个帧都记录数据,最后几百帧的历史被显示出来。单击特定的框架将显示窗口下部的详细信息。根据当前选择的时间线区域显示不同的详细信息。

时间轴的垂直比例是自动管理的,并试图填充窗口的垂直空间。注意,为了在CPU使用区域中获得更多细节,可以删除内存和呈现区域。此外,可以选择时间线和统计区域之间的拆分器,并向下拖动,以增加用于时间线图的屏幕区域。


时间轴由几个方面组成:CPU使用、渲染和内存。可以通过单击面板中的“关闭”按钮删除这些区域,然后使用“配置文件”控件栏中的“添加区域”下拉重新添加这些区域。


注意,标记区域中的彩色方块可以控制是否显示关联的时间线。若要从显示中移除样本,请单击颜色键。键将变暗,数据将从图中删除。这对于识别CPU图中的尖峰的原因是有用的,例如。


WebGL的

您可以在WebGL上使用Unity分析器,就像在任何其他平台上一样。一个重要的区别是,你不能附加在WebGL中运行播放器,因为WebGL使用WebSockets进行通信,这将不允许浏览器端的传入连接。相反,您需要在构建设置中使用“Autoconnect Profiler”复选框。还要注意的是,绘制调用目前不能用于WebGL的剖析。

远程分析(Remote Profiling)

为了在另一台设备上运行游戏,或者在另一台计算机上运行Unity播放器,可以将Unity编辑器连接到其他设备或计算机。下拉式Active Profiler显示在本地网络上运行的所有Unity播放器。这些球员是确定的球员类型和运行播放器的主机名”iphoneplayer(Toms iPhone)”。

要连接到Unity播放器,必须将Unity播放器作为Development build (菜单:File > Build Settings……)启动。

检查对话框中的Development Build选项。从这里您还可以检查Autoconnect Profiler在启动时编辑器和播放器自动连接。

iOS版

通过以下步骤在iOS设备上启用远程分析:

  1. 将您的iOS设备连接到您的WiFi网络。(Profiler使用本地WiFi网络将设备的性能分析数据发送到Unity编辑器。)
  2. 在Unity Editor的Build Settings对话框中(菜单:File > Build Settings ...),勾选Autoconnect Profiler复选框。
  3. 通过电缆将设备连接到Mac。在Unity Editor的Build Settings对话框(菜单:File __> __ Build Settings ...)中,勾选Autoconnect Profiler复选框检查并选择Build&Run
  4. 在设备上启动应用程序时,在Unity编辑器(窗口 > 分析器)中打开Profiler窗口。

如果使用防火墙,则需要确保端口54998到55511在防火墙的出站规则中处于打开状态 - 这些是Unity用于远程分析的端口。

注意:有时Unity编辑器可能不会自动连接到设备。在这种情况下,您可以通过选择适当的设备从Profiler窗口Active Profiler下拉菜单启动Profiler连接。

Android的

有两种方法可以在Android设备上启用远程分析:WiFi或ADB

对于WiFi分析,请按照下列步骤操作:

  1. 确保在Android设备上禁用移动数据。
  2. 将Android设备连接到WiFi网络(Profiler使用本地WiFi网络将设备的性能分析数据发送到Unity编辑器。)
  3. 通过电缆将设备连接到Mac或PC。检查Unity的Build Settings对话框中的Development BuildAutoconnect Profiler复选框,然后在Unity Editor中点击Build&Run
  4. 在设备上启动应用程序时,在Unity编辑器(菜单:Window > Profiler)中打开Profiler窗口。
  5. 如果Unity Editor无法自动连接到设备,请从Profiler窗口的Active Profiler下拉菜单中选择适当的设备。

注意: Android设备和主机(运行Unity编辑器)必须位于相同的子网上才能使设备检测正常工作。

对于ADB分析,请按照下列步骤操作:

  • 将设备通过电缆连接到Mac或PC,并确保ADB识别设备(即在adb设备列表中显示)。
  • 在Unity Editor的Build Settings对话框(菜单:File __> __ Build Settings ...)中,选中Development Build__checkboxcheck并选择 Build&Run__。
  • 在设备上启动应用程序时,在Unity编辑器(菜单:窗口 > 分析器)中打开Profiler窗口。
  • 从Profiler Window Active Profiler下拉菜单中选择AndroidProfiler(ADB@127.0.0.1:34999)注意:当您点击Build&Run时,Unity Editor会自动为您的应用程序创建一个adb隧道。如果要分析另一个应用程序,或者重新启动adb服务器,则必须手动设置此隧道。为此,请打开终端窗口/ CMD提示符并输入:
adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}

注意:下拉菜单中的条目仅在所选目标是Android时才可见。

如果使用防火墙,则需要确保端口54998到55511在防火墙的出站规则中处于打开状态 - 这些是Unity用于远程分析的端口。

推荐阅读更多精彩内容