Unity性能优化分析篇

性能优化是游戏项目开发中一个重要环节。游戏帧率过低,手机发烫, 包体太大,低端机上跑不起来等, 这些都需要来做优化,不管过去,现在,未来,性能优化都是永恒的话题。
而性能优化首先要掌握的是性能分析,通过分析才能发现问题所在。性能分析对于游戏开发是必备的,通过性能分析工具可以给我们提供游戏性能表现的详细信息。如果我们的游戏存在性能问题,如低帧率或者高内存占用,性能分析工具可以帮助我们发现问题的起因,并协助我们解决问题。
 

开始之前,有关性能分析需要了解的概念:

FPS(帧率)

FPS是衡量游戏性能的基本指标。在游戏中,一帧类似于动画中的一帧,FPS是指游戏运行时每秒所运行的帧数,也可以理解为每秒渲染的画面数。
通常FPS越高,表明游戏性能运行越好,对于大多数当前游戏的目标是帧率60FPS,通常来说,帧率在30FPS以上是可以接受的,特别是移动游戏,或者不需要快速反应互动的游戏,对于在VR游戏中,则至少需要90FPS。
实际上FPS并不是衡量游戏稳定体验的理想指标。考虑以下情况:在运行时的前0.75s内渲染了59帧。然后接下来的1帧需要0.25s才能渲染完毕。虽然是60fps,但实际上会让玩家感觉卡顿。对于我们来说更有用的是渲染一帧需要多少毫秒。
渲染一帧,Unity必须执行很多不同的任务。简单的说,Unity必须更新游戏的状态,获取游戏的快照并且把快照画到屏幕上。有一些任务是在每一帧都执行的,包括读取用户输入,执行脚本,运行光照计算等。除此之外,有许多操作是在一帧执行多次的,例如物理运算。当所有这些任务都执行的足够快时,我们的游戏才会有稳定且可接受的帧率。当这些任务执行的不够快时,渲染一帧将花费太长的时间,并且帧率会因此下降。
知道哪些任务花费了太长的时间执行,对于我们怎样去解决性能问题是十分关键的。一旦我们知道了哪些任务降低了帧率,我们就可以尝试去优化游戏的那一部分。这就是为什么性能分析工具这么关键:性能分析工具告诉我们在一帧中每个任务花费了多长时间。


VSync(垂直同步)

VSync将应用程序的帧率与显示器的刷新速率同步。这意味着,如果您有一个60Hz的显示器,并且游戏的帧预算在16.66ms内,则它会强制以60fps运行,而不允许更快。将帧率与显示器的刷新速率同步,可以减轻GPU的负担并解决屏幕撕裂等视觉图像瑕疵。在Unity中,通过Quality settings 可以设置VSync Count (Edit > Project Settings > Quality)。
QualitySettings.vSyncCount有三种选项

  • Don't Sync(不同步) 
  • Every V Blank(每一个垂直同步) 
  • Every Second V Blank(每一秒的垂直同步) 

移动平台忽视 QualitySettings.vSyncCount。仅使用 Application.targetFrameRate 控制帧率。移动平台的最大帧率就是屏幕的刷新率,移动平台上的默认帧率通常为每秒 30 帧。

垂直同步对 FPS 的影响

我们平时用的电脑显示器,一般屏幕的刷新率都是80HZ上下,那么显卡会按照每秒80HZ来发送一个垂直同步信号。

  • 开启垂直同步:显卡绘制完一屏图像后,需要等待80HZ垂直同步信号的到达,才可以开始绘制下一屏。这样游戏自然受到刷新率运行的制约。
  • 关闭垂直同步:那么游戏中显卡绘制完一屏图像后,显卡和显示器无需等待垂直同步信号达到,就可以开始下一屏的绘制,展示了显卡的实力。

但是不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面更加平滑和稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因。
 

Unity Profiler

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值