Unity性能优化(1)-官方教程The Profiler window翻译
本文是Unity官方教程,性能优化系列的第一篇《The Profiler window》的简单翻译。
相关文章:
Unity性能优化(1)-官方教程The Profiler window翻译
Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
简介
性能分析工具可以给我们提供游戏性能表现的详细信息。如果我们的游戏存在性能问题,如低帧率或者高内存占用,性能分析工具可以帮助我们发现问题的起因,并协助我们解决问题。
Profiler工具是Unity内置的强大的性能分析工具,本文介绍如何使用它。当我们阅读完本文,并且熟悉Profiler的界面和功能时,我们可以继续学习怎么使用它对不同类型的性能问题进行诊断。
Profiler可以给我们提供,关于我们的游戏的不同部分是怎样运行的深入的信息。

使用Profiler我们可以学习游戏性能的不同方面,例如我们的游戏如何使用内存,不同的任务使用了多少cpu时间,物理运算执行的有多频繁。最重要的是,我们可以利用这些数据找到引起性能问题的原因,并且测量我们的解决方案的有效性。
Profiler布局
在我们使用Profiler收集游戏数据之前,先打开它熟悉下界面布局。
-从菜单Window > Profiler打开

注意,只有在它开始录制时才会显示性能信息,当我们第一次打开时,一些部分是空的。
Profilers
在窗口左侧,可以看到一列profilers,每个profiler显示我们游戏的一个方面的信息,分别为cpu使用情况,gpu使用情况,渲染,内存使用情况,声音,物理和网络。

当开始录制时,窗口上部的每个profiler会随着时间显示数据。性能是随着时间变化的,所以随着时间变化的信息是比仅仅一帧的信息有用的多的。有些性能问题是持续性的,有些问题是仅仅在一帧中出现的,还有一些性能问题是随着时间逐渐显现的。

Profiler的下半部显示我们选择的当前profiler当前帧的详细信息。

这里显示的数据依赖于我们当前选择的profiler。例如,当选中内存profiler时,这个区域显示如游戏资产使用的内存和总共内存占用等。如果选中渲染profiler,这里会显示被渲染的对象数量或者渲染操作执行次数等数据。
这些profiler会提供很多详细信息,但是我们并不总是需要使用这些所有的profiler。事实上,我们通常在分析游戏性能时只是观察一个或者两个profiler。例如,当我们的游戏运行的比较慢时,我们可能一开始先查看cpu usage profiler。

cpu usage profiler给我们一个总览,可以观察到我们游戏的哪个部分占用了最多的cpu时间。然后我们可以查看那个部分相关的profiler。例如我们发现物理运算函数占用了很长时间,那么我们就需要使用物理profiler去获取更多的详细信息。
我们可以关闭一些我们不关心的profiler,通过点击x按钮就可以关闭。

通过点击左上角的Add Profiler按钮,我们可以添加profiler。

我们可以随时添加或者删除profiler,添加删除操作不会清除他们的数据,仅仅是显示或者隐藏他们。
控制
Profiler窗口的顶部包含一些控制按钮。

我们可以使用控制按钮开始或停止分析和浏览收集的数据。
一个典型的使用控制按钮的过程如下,开始分析我们的游戏,当游戏出现性能问题时,停止分析,然后通过时间线控制,逐帧的找到显示出性能问题的帧,这帧的详细信息会在下半部窗口显示。
录制分析数据
现在我们理解了profiler的界面布局,让我们继续学习如何录制数据,以及如何解读数据来帮助我们理解游戏的性能。
我们需要理解,当录制数据时,游戏性能会受到微小的影响,一般的性能分析工具都存在这个问题,想要获取深入的信息而没有额外的消耗是不可能的。
我们可以在unity editor中运行游戏时进行分析,也可以在游戏的development build运行时进行分析。development build的unity游戏和常规build有两方面不同:development build在游戏运行时可以连接profiler,并且包含了调试用的文件。
在development build中进行性能分析通常要比在unity editor分析要好。有两个原因:第一,性能和内存占用等数据要比在unity editor中准确,因为profiler本身也属于editor的一部分,这会影响结果。第二,最好在我们游戏的目标平台上进行性能分析,如果我们的游戏是安卓游戏,那么我们应该在一个安卓设备上进行测试。一些问题可能只会在特定的硬件或者特定的操作系统上出现,而我们如果只是用unity editor进行测试,就无法发现这些问题。
虽然如此,有时我们在unity editor中进行分析也是有一定作用的。有时我们需要快速的了解游戏大体上的性能,并不需要精确的结果,此时可以在unity editor中进行分析。例如,我们也许需要在运行时启用或禁用大量的游戏对象,查找是哪一个游戏对象引起的性能问题,在unity editor中测试这些更改是比development build要方便很多的,当我们粗略的发现问题大概范围时,再在development build中进行分析,获取更加准确的信息帮助我们处理这个问题。
在Unity Editor中进行分析
在unity editor中进行录制分析的步骤如下:
-在unity中打开游戏工程
-菜单中打开profiler Window > Profiler
-确保Profiler窗口顶部的Record按钮为选中状态
-在Play Mode中运行游戏
此时Profiler会随着游戏中的互动实时的显示分析数据。
在development build中进行分析
在目标平台上进行分析,需要运行development build并连接Profiler。不同的目标平台有不同的具体做法。
Windows, OSX, Linux and WebGL
步骤如下:
-在unity中打开想要分析的项目
-菜单中打开profiler Window > Profiler
-确保Profiler窗口顶部的Record按钮为选中状态
-打开build settings(File > Build Settings)
-勾选Development Build
-勾选Autoconnect Profiler
-点击Build and Run

此时Profiler会随着游戏中的互动实时的显示分析数据。
iOS or Android
在iOS或者Android中连接Profiler有些复杂,因为我们需要把游戏安装到设备上,并且把设备连接到Unity Editor。
详细的操作步骤,请参考on this page of the Unity Manual.
使用Profiler诊断问题
现在我们理解了Profiler是怎样工作的,我们可以使用它来确定我们游戏中的问题,并协助我们解决这些问题。
如果你的游戏运行慢,卡顿,这篇文章可以帮助你使用Profiler找到问题所在。
扩展阅读
Unity Learn: Introduction to the profiler
Unity Learn: Profiler overview for beginners
Unity Manual: The CPU Profiler
Unity Manual: The GPU Profiler
Unity Manual: The Rendering Profiler
Unity Manual: The Memory Profiler
Unity Manual: The Audio Profiler
Unity Manual: The Physics Profiler
Unity Script Reference: Profiler
Unity性能优化(1)-官方教程The Profiler window翻译的更多相关文章
- Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity 性能优化(力荐)
开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. ...
- Unity性能优化的N种武器
贴图: l 控制贴图大小,尽量不要超过 1024 x1024: l 尽量使用2的n次幂大小的贴图,否则GfxDriver里会有2份贴图: l 尽量使用压缩格式减小贴图大小: l 若干种贴图合并 ...
- Unity性能优化专题---腾讯牛人分享经验
这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿 ...
- Unity性能优化-音频设置
没想到Unity的音频会成为内存杀手,在实际的商业项目中,音频的优化必不可少. 1. Unity支持许多不同的音频格式,但最终它将它们全部转换为首选格式.音频压缩格式有PCM.ADPCM.Vorbis ...
- Unity性能优化-DrawCall
1. DrawCall是啥?其实就是对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西.所以,是谁去调用这些接口呢?CPU.比如有上千个物体,每一个的渲染都需要去调用一次底层接口 ...
- Unity性能优化之 Draw Call原理<转>
Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如 ...
随机推荐
- PHP 高级编程(3/5) - 使用SPL(标准PHP库)实现观察者模式
SPL(标准PHP库 - Standard PHP Library)是PHP5面向对象功能中重要的部分.原文解释是这样的“The Standard PHP Library (SPL) is a col ...
- python2.7 内置ConfigParser支持Unicode读写
1 python编码基础 对应 C/C++ 的 char 和 wchar_t, Python 也有两种字符串类型,str 与 unicode: str与unicode # -*- coding: ut ...
- h5应用缓存及收藏时Icon显示
h5应用实现离线缓存,加载后,断网仍然可以继续使用. 一.需求 转行做h5,目前做赛道游戏,动手做了个赛道编辑器web版的,由于web版需要开启服务器才能使用,策划要想回家使用就要发布到外网服务器了, ...
- jQuery -原生 如何互转
今天研究源码的时候发现,不需要用get() 也能进行原生转换,使用原生方法. 原生- jQuery对象 var obj=document.xxx $(obj).css(); 也可以直接 $(doc ...
- iOS 触摸事件与UIResponder(内容根据iOS编程编写)
触摸事件 因为 UIView 是 UIResponder 的子类,所以覆盖以下四个方法就可以处理四种不同的触摸事件: 1. 一根手指或多根手指触摸屏幕 - (void)touchesBegan:(N ...
- CSS笔记总结
1.让页面里的字体变清晰和变细 -webkit-font-smoothing: antialiased; 2.让Chrome支持小于12px 的文字 -webkit-text-size-adjust: ...
- [SQL Server] 特殊字符、上标、下标处理
今天遇到一个问题是往 SQL Server 中导入像m².m³这样的单位数据,可是在 SQL Server 中查看到的都是 m2.m3,于是在网上查了一下资料,顺便摘录下来供日后查阅. 一 Wind ...
- 使用 SSH上传安装tomcat
开发步骤: 1.在soft文件夹下上传tomcat 2.[root@localhost soft]# tar -zxvf apache-tomcat-7.0.61.tar.gz //解压安装 ...
- 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法
1,到官网下载最新的boost,www.boost.org 这里我下载的1-63版本. 2,安装,解压后运行bootstrap.bat文件.稍等一小会就OK. 3,编译boost库.注意一定要使用VS ...
- spider RPC框架的需求来源与特性介绍(一)
spider RPC 特性介绍 spider RPC 性能测试 spider RPC 入门指南 spider RPC 配置文件参考 spider RPC 开发指南 spider RPC 安全性 spi ...