赞
踩
在这里,我将考虑使用由Unity游戏引擎, 以及Unity独立开发者提供的优化工具。
我还将深入探讨一些视频游戏中常见的性能问题的细节,并从代码和资产的优化、技巧和窍门这几个方向为其找到解决方案。
Unity优化是指使游戏运行得更好的过程。通常情况下,优化的主要原因是使游戏更流畅,或者使游戏更容易被更多的观众使用,从而使游戏在低端设备上运行得更好。
接下来将介绍常见的优化周期,在下一个开发阶段后,当游戏中突然出现明显的掉帧时,您需要按顺序进行如下的步骤:
你们可以根据问题的性质用不同的方式优化Unity游戏。性能问题可以根据其性质分为几种类型。
Spike(n.尖状物)是指游戏帧速率的突然下降。当游戏突然停止并且在一段明显的时间内没有运行时,就会注意到这一点。这可能会打破玩家的沉浸感,或导致他在操作时犯下一个本来不会犯的错误。Spikes可以被视为Profiler Graph的高点。
Spikes主要由复杂的计算或在单个帧期间执行的困难操作引起。其主要是高强度游戏(驾驶或射击游戏)中的一个问题,这类游戏需要稳定的帧率和对游戏的高度控制才能让人感觉良好。
垃圾收集峰值是指由Unity的GC导致的帧率下降,在玩游戏时很容易被注意到。这些Spikes通常很高,当内存中的垃圾到达内存的阈值,收集器开始工作,从而清理内存中不必要的对象时,它们就会出现。它们的频率取决于游戏每帧产生的垃圾量。
通过在运行时生成更少的垃圾,可以降低GC出现的频率。完全防止的唯一方法是在运行时不生成垃圾。这是一项巨大的任务,必须从项目一开始就加以考虑。
每帧成本是指每一帧运行的计算和操作所需要的成本。例如,物理计算、运行AI行为或处理角色动画。
每帧成本都会降低游戏的总体帧速率,让游戏变得不那么流畅。如果一个游戏大体上运行不好,这就是需要改进的地方。
加载时间是指游戏加载所需的时间。这包括游戏打开时的第一次加载,以及在运行时发生的加载,例如在场景之间切换。虽然通常不是主要问题,但加载时间过长或加载屏幕出现得太频繁会对用户体验产生负面影响。
为了减少加载的时长,考虑拆分加载时的工作。也就是预先加载资源,以减少加载屏幕期间需要加载的对象数量,或降低加载场景的复杂性。
在一个开放世界的游戏中,需要在运行时加载许多对象,可以实现一种回收或流式资产的方法。在“内部”游戏中,每个框架的一小部分用于加载和卸载资产。这使得整个四个小时的体验只需一个初始加载屏幕即可完成。
RAM(随机存取存储器)是在运行时加载游戏的存储器。RAM在运行时存储游戏所需的一切。VRAM(视频随机存取存储器)位于显卡上,用于图形效果。VRAM是用于存储图形卡绘制的纹理和模型的存储器。RAM是CPU使用的,而VRAM是GPU使用的。未优化或太多资产都可能使其成为项目的瓶颈。当内存不足时,可能会出现卡顿。
为了减少项目所需的内存量,请考虑如下步骤:
…
- 本文章转载自https://makaka.org/unity-tutorials/optimization
- 自己学习使用,第一次翻译,如有差错请见谅。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。