写给自己部门的一个优化文档

  接触优化,捣鼓了几天,然后负责人让我写个文档分享下。仅限内部使用,不具有通用性

                                             美    术

1 静态对象勾选static, 物体上的MeshCollider,,Animator组件去掉。

2 图片资源导入Unity后修改下Max size,在不失真的情况下,尽量的小,一般最大不要超过1024.

3 玩家看不到的模型,可以做的尽量简单,顶点数和三角面尽量的少。例如怪物,人物模型尽量不超过5000,最多不过1W。一般导入Untiy后顶点数不超过1W都能接受,看具体情况,比如一个子弹,几百的顶点数即可,一个炮台,最好能控制在3000以内。需要精细的另说。

4 合并mesh,材质。有多个小的子物体的,可以合并成一个mesh,能用一个材质的就用同一个材质,一个模型的materials尽量控制在3个以内。

5 场景中需要有多个平行光的,告诉程序即可,由程序员处理需要动态批处理的物体。最好的情况是不使用实时光。

6 场景使用LOD技术

7 粒子特效控制个数,达到效果的情况下尽量的少,对于场景中需要大量出现的,可以不使用粒子特效,必须用的尽量减少粒子个数,粒子大小。

8 声音。背景声音可以使用MP3的压缩格式,较短的声音可以使用wav

                                    

                                        程    序

1 优化代码。

         1)设置物体父级用SetParent函数

         2)不要频繁的创建对象

         3)不要在每帧调用的函数中处理复杂的数学运算

         4)不要每帧都使用耗时函数查找对象

         5)……

 

2 先判断瓶颈是GPU还是CPU。

    关闭垂直同步,在profiler中查看耗时的地方,以往经验,Camera.render一般不会高于7ms。如果再关闭垂直同步的情况下,出现了Gfx.WaitForPresent,说明代码限制了帧数,或者说GPU跟不上cpu的速度,需要优化渲染,瓶颈就在GPU。

3  BehaviourUpdate总耗时一般不会高于2ms,太高就需要优化代码。 GC Alloc如果每帧高于10K的都需要注意下,理论上高于2k的都要处理,如果一个每帧都调用的函数时间超过0.5ms,那要想想该怎么优化了。

4 动态批处理。一般来说顶点数低于900的对象,可以使用批处理技术,相同的材质,相同的mesh,相同的缩放比例,会自动进行动态批处理。需要注意的是,美术有可能需要多个平行光,这些光会影响到动态批处理的对象,设置Lighting->Culling Mask,不要让光影响到需要动态批处理的对象即可。

5 按以往经验,Draw call个数不可高于2500(戴上眼镜情况下),这是极限了,再高就要掉帧,一般要控制在1000以内。顶点数和三角面最好控制在100W以内。

6 关闭垂直同步,灯光选择NoShadows.

 2016-10-27修改

7.代码方面,将不能静态批处理和动态批处理,材质又是同一种的,可以进行mesh合同。

ps: 电脑上测试帧数,需注意关闭Profiler,Scene场景,控制台输出对帧数影响也较大。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值