“你愿意为了性能消耗放弃多少艺术风格?” 相信每个开发者在开发游戏时,都会思考这个问题。我们需要注意性能的消耗,或者找到一个方法来保持在美学方面与原目标尽可能的接近,而不影响玩家体验。 Unity官方技术支持团队为大家分享过《Unity游戏项目常见性能问题》,今天为大家分享《Cubiques立体迷宫》的开发者Dilmer Valecillos为大家带来他在使用Unity进行移动游戏优化中的技巧。

实时阴影(硬阴影与软阴影)

实时阴影在游戏中会产生很棒的效果,但是开启实时阴影会造成巨大的性能消耗。实时阴影可能在编辑器中运行的时候看起来会有很好的效果,但是在某个时刻,当游戏在手机上运行的时候,你可能会发现FPS从大约60帧降到更低的数字,你也可能会发现,实时阴影在最新款的手机中会运行的很好,但是你的游戏将导致电池出现大幅度的损耗。这就是实时阴影导致的,是的没错,实时阴影需要CPU/GPU大量的计算能力。而使用软阴影会带来GPU性能的损耗。

优化游戏的阴影

Dilmer Valecillos决定在《Cubiques立体迷宫》中完全禁用阴影,因为当在iPhone 7 Plus上运行时,实时阴影得到了平均20-50FPS的结果。但即使有iPhone 7 Plus这样性能强大的设备,FPS都过低。所以如果想要保证游戏拥有相同的外观和感觉,则必须使用假阴影。如果你曾经玩过《Cubiques立体迷宫》,可能已经注意到这一切都是由一个立方体组成的。为了伪造一个阴影,只需要在Y轴上投影一个负偏移的平面,将一个简单的浅灰色添加到移动平台着色器的材质上,每个需要阴影的砖块都应拥有自己的假阴影,并具有相同的设置,使它看起来就像是一个真正的阴影。

说明:《Cubiques立体迷宫》是一款与休闲益智闯关游戏,拥有十分清新简约的画风。玩家需要在游戏中合理控制小方块的前进方向,一不小心就会失败重来,反应速度是很重要的,喜欢这类风格的玩家可以试试。

下图展示了实时阴影与假阴影的效果有多么的相似。但是从计算性能上则有了不少的提升。

120814djczpc0poocpjpm3.jpg

这样的修改,使得游戏从20-40FPS变化到60FPS。此外,移动设备也没有吃掉电池或变得超级热。在禁用实时阴影和使用假阴影之前,一开始我用调整阴影距离的方式提高了实时阴影的性能。只是最终我还是没有使用实时阴影。阴影距离可以帮助确保距离很远的对象没有阴影。使用质量设置中阴影的设置都可以对游戏效果和性能效果起到作用。

120823ekwu5my6iu9ih5wj.jpg

静态批处理

启用静态批处理将有助于性能的提升。在《Cubiques立体迷宫》中大多数的场景游戏对象都是静态的,这意味着唯一真正运动的物体主要是立方体角色。要启用静态批处理,只需将每个对象都设置为静态的,这是每个游戏对象都具有的属性,并且可以通过检视窗口进行设置。还要确保运行设置中在渲染部分启用静态批处理。

下面展示了几个静态游戏对象:

120838uqi9y55o90asq0y0.jpg

在Unity编辑器中,静态的网格不能被移动,实际这些被标记为静态的物体不应该有任何移动,因此,在运行时也不能通过Unity编辑器移动。

图片压缩

Unity中有很多图像压缩的选择,而UI元素的最佳选择是iOS设备中一个名为“RGB Compressed PVRTC 2 bits”的选项。在《Cubiques立体迷宫》中即便是使用低压缩率,UI看起来也不错。清记住需要根据平台来查看不同的选项。Unity为不同平台提优化供了特殊的选项,它能根据你的平台需要来优化纹理。

下图中展示了解如何根据平台设置压缩。

120855lm2o7l10yp2poqvj.gif

压缩也有助于节省应用程序的大小。你想要确保最终版本尽可能的小,因为程序在安装到手机中,玩家们会表现地非常的挑剔。另外如果应用程序超过了100MB,苹果要求下载就必须连接WiFi,因此需要尽可能的小于100MB。

后期处理堆栈

Unity的后期处理堆栈是很令人震惊的,它使你的游戏看起来更漂亮,当后期处理堆栈出现时,可能我们想要启用其中的每一个选项。运动模糊、环境遮罩、光晕、色彩分级等。这些选项可以给游戏一个美丽的后期效果,但每个选项都有成本上的消耗。正如之前而言,艺术之美带来可能会带来巨大的成本。

小结

除了本文中所提及的方法外,还有更多的方法可以实现游戏优化。例如:音频压缩,在Unity中使用Profiler。尽可能多的尝试每一个优化步骤,并在修改后进行测试,确保每次都将修改的新的内容提交到源代码控制,因为这允许你恢复历史代码,以防止出现不正确的更改。

后面我们还将继续为大家分享更多实用教程在在Unity官方中文社区(unitychina.cn),请保持关注! Unity, 游戏, 移动, 优化, 性能锐亚教育

锐亚教育 锐亚科技 unity unity教程