Notifications
Article
Profiler深挖-导航条(1)
Published 8 months ago
785
1
导航条
Profiler是Unity内置的优化性能利器,我决定写一系列文章将Profiler中一些少用且实际的功能列举出来。(Profiler的快捷键是Ctrl 或 Command + 7 ,我个人喜欢使用快捷键)
如下图所示,Profiler窗口打开后,最上面就是它的导航条了,从左到右依次解释它们的含义。
1)Add Profiler 下拉框中,可以选择需要观察的性能类型,不同的性能类型的指标是不同的。它们包括CPU(处理器)、GPU(显卡)、Rendering(渲染)、Memory(内存)、Audio(音频)、Video(视频)、Physics(物理)、Physics2D(2D 物理)、NetWork Messages(UNET 的网络消息)、Network Operations(UNET 的网络处理)、UI(UGUI)、UI Detail(UGUI 细节)、Global Illumination(全局光照)哇,是不是感觉好多?平时好像也用不到这么多的选项?不要紧,后面我们会一一解释给大家。
2)Record 是否立即记录。普通Editor下运行游戏,因为选择某一帧后编辑器可以自动暂停,所以Record没什么用。但是如果是在真机Profiler时,由于真机无法暂停游戏,为了避免选中的帧不会被后面帧率顶掉,所以此时就需要把Record取消选中了,这样就可以慢慢查看这一帧Profiler的所有信息了。
3)Deep Profiler 深度查看性能。先看看一段代码
public class NewBehaviourScript : MonoBehaviour { void Update() { A(); } void A() { B(); } void B() { for (int i = 0; i < 100; i++) { Debug.Log(i); } } }
上述代码中,我们可以看到Update方法中调用A方法。在调用B方法执行一个耗时计算。如下图所示,如果不开Deep Profiler的话,我们只能看到耗时的函数是NewBehaviousScript.Update方法。
试想一下完整游戏的函数调用时非常复杂的,如果不能精确到具体函数那么优化就很麻烦了。接着我们试试打开Deep Profiler选项。如下图所示,NewBehaviousScript.Update -》NewBehaviousScript.A -》NewBehaviousScript.B 我们已经能看到具体是哪个函数调用了耗时的地方,是不是感觉很cool呢?
4)Profiler Editor 查看编辑器性能。先看一段代码。
public class Test { [MenuItem("Tool/Test")] static void MyTest() { for (int i = 0; i < 100; i++) { Debug.Log(i); } } }
这是一段运行在编辑器模式下的代码,我们知道Unity是可以拓展编辑器的。那么如果我们自己写的编辑器代码有效率问题,那是不是就会影响编辑器运行的效果,如下图所示,可以利用Profiler Editor功能在非运行模式下查看编辑器代码的执行效率。
5)Editor 下拉框中可选择Profiler连接的设备(编辑器或者真机),后面章节我们会详细介绍和真机连接。
6)Allocation Callstacks 堆内存分配,选择Managed Callstatcks后,如下图所示,点开Timeline后,鼠标点击红色的块(堆内存分配)就可以看到堆内存分配的C++的栈信息。如果没有选择Managed Callstatcks,这里只能看到CG.Alloc的总信息。
7)Clear on Play 运行时清空之前的残留帧。
8)Clear 清空当前的帧。
9)Load 读取一个之前保存的Profiler日志信息查看。这个功能非常重要,比如我们可以在手机上生成Profiler日志文件,那么导出到电脑上,在这里Load后就可以查看手机里的Proiler信息了。(后面我们也会讲怎么从真机中保存Profiler日志)
10)Save 保存当前的日志,后面可以配合Load来查看。
11)Frame 当前帧和总帧率,旁边的 → 可以切换 前 后 一帧。
12)Current 快速定位到当前帧。
OKAY~导航栏已经介绍完毕,下一篇我们将继续介绍性能面板窗口。
Tags:
宣雨松MOMO
程序员 - Programmer
10
Comments
hemy
6 months ago
U3D开发工程师
文章不错
0