下面是演示环节 本节我们演示
Unity 性能分析工具 Profiler 的使用方法。
Profiler 能以直观的方式显示游戏运行时 各种资源的占有情况,包括
CPU、 GPU、 渲染 内存、
音频以及物理等方面 开发者可以根据这些信息,查看游戏的运行效率
定位游戏的性能瓶颈,从而快速优化游戏的性能 这里,我们已经在
Unity 编辑器中打开了《慕课英雄 2》 的 GamePlay 场景。
首先,依次点击菜单栏中的 Window Profiler,打开 Profiler
视图 [空白_录音]
然后,在 Profiler 视图上方 点击
Record 按钮,打开录制功能 接着,点击 Play
按钮,执行游戏预览 [空白_录音]
可以看到,Profiler 会自动记录游戏运行时的性能数据
并显示在分析器的时间轴上 最后,我们暂停游戏的预览
下面我们回到 Profiler 视图
讲解其中各个部分的含义 Profiler
视图有多条分析器时间轴 分别记录了
CPU、 GPU Rendering、
Memory、 Audio Physics、 Physics
(2D) 等方面的内容。
分析器时间轴左侧的头部 标明了每条分析器时间轴所记录的内容
点击分析器时间轴
头部右上角的叉号,可以关闭不需要的分析器时间轴
[空白_录音] 点击
Profile 视图左上角的 Add Profile
菜单,可以把关闭的分析器时间轴重新添加回来 [空白_录音]
每条分析器时间轴用不同的颜色表示不同的信息 我们可以在时间轴头部看到对应关系表
CPU 使用情况的分析器时间轴
使用面积图的方式记录了渲染 脚本、
物理系统、 垃圾回收 等 CPU
的使用情况 时间轴的纵坐标是 CPU 耗时 以毫秒为单位。
可以看到,渲染操作平均每帧耗时约为 10
毫秒 在分析器时间轴上选中一帧
可以在 Profile 视图底部的 Overview 窗口 看到选中帧的详细信息。
在 CPU Usage 时间轴上 单击选中某帧
Profile 视图底部的 Overview 窗口会显示该帧中
各个函数的运行时间和占用的内存空间大小 在
Memory 分析器时间轴上
单击选中某帧,Profiler 视图底部的 Overview
窗口会显示该帧中各种资源对内存的详细占用情况 Profiler
视图顶部是工具栏 右侧的 Frame
显示了当前统计的总帧数 以及选中帧的序号
右侧的小三角用于切换上一帧和下一帧 Current
按钮用于跳转至记录中的最新一帧 在工具栏中,我们可以开启
Deep Profile,深度分析 开启深度分析后
所有的函数调用都会被记录。
这样 能够确切统计出,游戏代码花费的所有时间 但是占用内存较高,会影响游戏的运行效率
我们可以在脚本代码中手动开启代码分析 双击打开
PlayerMove 脚本 [空白_录音]
在 Jump 函数的前后
插入 Profiler.BeginSample
[空白_录音] 和
Profiler.EndSample
[空白_录音] 其中,BeginSample 函数的参数
表示本次检测的名称,我们将其命名为 MyProfiler
杠 FPSPlayerMove
该名称会显示在详细信息的窗口中
每当玩家跳跃时 我们使用
Thread.Sleep 函数
[空白_录音] 让程序暂停
100 毫秒 使用
Thread 函数需要
加入命名空间 System.Threading [空白_录音]
下面 我们再次分析游戏程序
[空白_录音]
跳跃几次
然后停止预览 [空白_录音]
在 Profiler 中找到并选中耗时较长的帧
可以看到 这里玩家的
FPSUpdate 函数 [空白_录音]
消耗了约 100 毫秒的时间
展开可以看到我们刚才手动添加的测试名称 MyProfiler 杠
FPSPlayerMove 最后,我们回到刚才的
脚本
删除刚才添加的测试代码
[空白_录音] 保存脚本
以上就是本节演示的全部内容