热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UnityProfiler概述及Profilerwindow说明

unity,profiler,近程,通信,profiler

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

Profiler概述

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

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

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

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

有关使用该工具的提示

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

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

另请参阅:优化图形性能。

Profiler窗口

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

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

img_e67628f48b7511b376ec7262c19eeddf.png

img_2d841f277039937d5f93605379627e0b.png

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

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


    img_0238ad600d7f537e18a482077570723b.png
  • 连接真机上的选项
    img_ec8a46d437dd3f3a4b6a21f7df581048.png
  • 清除 载入 保存 对应的日志
    img_7d756f64cb5217016bfa7fefa8c49995.png

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

  • 逐帧调整面板
    img_27ae83ec7b0c745b33f0c7c0d48a0ee7.png

深度分析

img_bfbac3745f6386a869273d822542ead9.png

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

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

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

查看同步时间(View SyncTime)

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

分析器时间轴(Profiler Timeline)

img_6343549b712e61c402bcc2c988a95485.png

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

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


img_4eea21fb6ee8b2c42631803752c0d6fc.gif

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


img_ce027337737ed4b689ebea2dc54ca191.png

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


img_ac2d3cc23dec94862b771b30a9db51b2.png

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用于远程分析的端口。


推荐阅读
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 本文探讨了在使用Selenium进行自动化测试时,由于webdriver对象实例化位置不同而导致浏览器闪退的问题,并提供了详细的代码示例和解决方案。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 在使用 MUI 框架进行应用开发时,开发者常常会遇到 mui.init() 和 mui.plusReady() 这两个方法。本文将详细解释它们的区别及其在不同开发环境下的应用。 ... [详细]
  • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
  • 台式电脑的电力消耗:待机一天耗电多少?
    探讨台式电脑的电力消耗问题,特别是待机状态下的能耗。本文将详细介绍影响电脑功耗的因素,并提供计算和优化电源配置的方法。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
author-avatar
严志文在吉安_3fu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有