体积小、功耗小、带宽小
在开发移动游戏时,我们可以借助一些性能优化方法来提高游戏性能,改善画面质量。
用户可以在一下几个方面优化:
1.资源方面(游戏中使用美术资源)
动态物体:
游戏主角(1500),怪物,NPC
^控制面片数量300-2000面片
去掉细节,节省面片数量
^控制skinned mesh render 为1个
控制材质数量 1-3个
控制骨骼数量 小于30根 (pc 15-60)
静态物体
一般静态物体(控制网格顶点数少于500个)
标记为static
Static Batching
Animation组件:如果不需要,尽量不要附加
自带地形
控制地形的分辨率
地形高度图尺寸小雨257
地形纹理中尽量使用少的混合纹理数目(尽量不要超过4个)
纹理数据
纹理格式
尽量采取压缩格式(3D硬件芯片)
纹理尺寸(长宽小于1024,同时应该尽量小,够用就好)
建议使用Mipmap(虽然有可能会增加程序的大小,但会提高渲染效率)
音频数据
播放时间长(背景音乐)
可以使用.ogg或.mp3的压缩文件格式
播放时间短
可以使用.wav或.aif格式的未压缩格式
2.引擎方面(优化选项)
灯光设置:在满足效果的前提下,控制场景中,光源的个数,尽量不要添加冗余光源。
光源设置:控制important光源的数目(尽量1个或干脆没有)个数越多,drawcall越多
pixel light count(1-2个)
相机设置:设置合理的裁剪平面
粒子效果:建议小于200个
每个例子发射器所发射不超过50个
粒子大小,尽量小(对于非常小的粒子,在其粒子纹理中可以去除Alpha通道)
物理引擎:
碰撞体控制(尽可能的使用Sphere Colloder和Box Collider,尽量避免使用Mesh Collider)
渲染优化
尽可能的避免使用Alpha Test和Alpha Blend
* Alpha Test的性价比 比较低,可能的话,使用Alpha Blend代替
使用Alpha Test和Alpha Blend的像素数降至最低
DrawCall Batching
unity在渲染时,可以将一些物体合并,从而可以使用一个DrawCall来渲染他们,这就称为DrawCall Batching
理论上讲,unity batching的物体越多,就会得到更好的渲染性能。
Static Batching
针对静态物体进行Batching
对几何数据的大小没有限制
使用后会额外的增加内存开销来存储Batch后的数据。
Dynamic Batching
对于相同的动态物体,unity会自动对其进行Batching。
纹理合并Texture Patching
遮挡剔除(Occlusion Culling)
3.代码方面(优化代码)