六要点实现Unity3D开发性能优化

开发 游戏开发
本文将为大家介绍Unity3D开发性能优化的六个要点,供各位游戏开发者参考。

 1、顶点性能

一般来说,如果您想在iPhone 3GS或更新的设备上每帧渲染不超过40,000可见点,那么对于一些配备 MBX GPU的旧设备(比如,原始的 iPhone,如 iPhone 3g和 iPod Touch第1和第2代)来说,你应该保证每帧的渲染顶点在10000以下。

2、光照性能

像素的动态光照将对每个受影响的像素增加显着的计算开销,并可能导致物体会被渲染多次。为了避免这种情况的发生,您应该避免对于任何单个物体都使用多个像素光照,并尽可能地使用方向光。需要注意的是像素光源是一个渲染模式(Render Mode)设置为重要(Important)的光源。像素的动态光照将对顶点变换增加显着的开销。所以,应该尽量避免任何给定的物体被多个光源同时照亮的情况。对于静态物体,采用烘焙光照方法则是更为有效的方法。

3、角色

每个角色尽量使用一个Skinned Mesh Renderer,这是因为当角色仅有一个 Skinned Mesh Renderer 时, Unity 会 使用可见性裁剪和包围体更新的方法来优化角色的运动,而这种优化只有在角色仅含有一个 Skinned Mesh Renderer 时才会启动。角色的面数一般不要超过1500,骨骼数量少于30就好,角色Material数量一般1~2个为最佳。

4、静态物体

对于静态物体定点数要求少于500,UV的取值范围不要超过(0,1)区间,这对于纹理的拼合优化很有帮助。不要在静态物体上附加Animation组件,虽然加了对结果没什么影响,但是会增加CPU开销。

5、摄像机

将远平面设置成合适的距离,远平面过大会将一些不必要的物体加入渲染,降低效率。另外我们可以根据不同的物体来设置摄像机的远裁剪平面。Unity 提供了可以根据不同的 layer 来设置不同的 view distance ,所以我们可以实现将物体进行分层,大物体层设置的可视距离大些,而小物体层可以设置地小些,另外,一些开销比较大的实体(如粒子系统)可以设置得更小些等等。

6、DrawCall

尽可能地减少 Drawcall 的数量。 IOS 设备上建议不超过 100 。减少的方法主要有如下几种: Frustum Culling , Occlusion Culling , Texture Packing 。 Frustum Culling 是 Unity 内建的,我们需要做的就是寻求一个合适的远裁剪平面; Occlusion Culling ,遮挡剔除, Unity 内嵌了 Umbra ,一个非常好 OC 库。但 Occlusion Culling 也并不是放之四海而皆准的,有时候进行 OC 反而比不进行还要慢,建议在 OC 之前先确定自己的场景是否适合利用 OC 来优化; Texture Packing ,或者叫 Texture Atlasing ,是将同种 shader 的纹理进行拼合,根据 Unity 的 static batching 的特性来减少 draw call 。建议使用,但也有弊端,那就是一定要将场景中距离相近的实体纹理进行拼合,否则,拼合后很可能会增加每帧渲染所需的纹理大小,加大内存带宽的负担。这也就是为什么会出现“ DrawCall 降了,渲染速度也变慢了”的原因。

原文链接:http://www.unitymanual.com/6572.html

【编辑推荐】

责任编辑:彭凡 来源: Unity3D教程手册
相关推荐

2023-09-11 16:54:17

谷歌开发

2013-04-25 09:56:24

unity3D手机游戏引擎

2013-02-20 13:37:54

Android开发性能

2013-04-25 10:03:07

unity3D手机游戏引擎

2017-11-06 14:33:54

Web开发服务器网络

2011-12-01 09:00:12

Android提升开发性能要点

2013-04-25 09:08:39

unity3D手机游戏引擎

2010-07-12 17:28:17

SharePointVS 2010

2013-04-25 13:27:11

unity3D手机游戏引擎

2009-09-27 14:04:00

Web应用开发性能

2015-05-04 09:48:44

JavaJava开发调试工具

2012-12-24 09:11:58

iOSUnity3D

2012-12-24 09:20:48

AndoidUnity3D

2012-12-24 08:45:19

iOSUnity3D

2013-04-09 13:42:23

Unity3D基础知识梳理

2013-04-25 09:47:54

unity3D手机游戏引擎

2013-04-25 00:06:06

unity3D手机游戏引擎

2013-06-19 08:52:48

Unity3D

2013-04-25 10:12:02

unity3D手机游戏引擎

2013-04-25 10:40:32

unity3D手机游戏引擎
点赞
收藏

51CTO技术栈公众号