【Unity优化】Unity优化总结

本文转载自:    http://blog.csdn.net/chenxuezhi123/article/details/45307397       向原作者致敬~~~




优化概括的说可以分为:CPU,GPU,内存;

开发上的细节可以分为:资源,引擎,代码,着色器;

1.资源方面;
        》动态物体; 游戏主角、怪物、NPC等;
                   控制面片数量 300 - 2000面片;
                   控制Skinned Mesh Render 为1个;
                   控制材质数量 1-3个;
                   控制骨骼数量 小于30根;
        》静态物体;
                    控制网格顶点数 少于500个;
                    标记为Static batching;
                    Animation组件: 如果不需要,尽量不要附加;
                    自带地形资源: 控制地形的分辨率 地形高度图尺寸小于257;
                    地形纹理中尽量使用少的混合数目:尽量不要超过4个;
        》纹理数据;
                    纹理贴图:纹理格式 尽量采取压缩格式;
                    纹理尺寸: 长宽小于1024, 同时应该尽量小够用就好;
                    建议使用Mipmap : 虽然Mipmap有可能会增加程序的大小,但会提高渲染效率;
        》音频数据;
                    播放时间长的音乐如(背景音乐) 可以使用.ogg或.mp3的压缩文件格式;
                    播放时间段的音乐       可以使用.wav或.aif格式的未压缩格式;
       》Bunddle
       》程序包
2.引擎方面;
        》光源设置;
                    在满足效果的前提下,控制场景中光源的个数,尽量不要添加冗余光源;
                    控制Important光源的数目 , 尽量1个或干脆没有,个数越多,drawcall越多;
                    Pixel Light Count : 1-2个;
        》相机设置;
                    设置合理的剪切平面,可根据不同的场景进行修改;
        》粒子特效;
                    屏幕上的粒子总数 ,建议小于200个粒子;
                    每个粒子发射器所发射的粒子总数建议不超过50个;
                    粒子大小:如果可以的话,粒子的Size应该尽量的小;
                    对于非常小的粒子,在其粒子纹理中可以去除Alpha通道;
    尽量不要开启粒子的碰撞功能;
        》物理引擎:
                    碰撞体控制:尽可能使用Sphere Collider 和 Box Collider,尽量避免使用Mesh Collider;
        》渲染优化;
                    尽可能的避免使用Alpha Test和Alpha Blend
                            Alpha Test 的性价比较低,可能的话,使用Alpha Blend 来代替Alpha Test.
                            将使用Alpha Test 和Alpha Blend的像素数降至最低;
                     DrawCall Batching;
                            Unity在渲染是,可以将一些物体合并,从而可以使用一个DrawCall来渲染他们,这称为 DrawCall Batching。 理论上将,UntiyBatching的物体越多,则会得到个号的渲染性  能;
                    Static Batching;
                    Dynamic Batching;  缩放物体无法与非缩放物体进行
                    纹理合并Texture Patching;
                    遮挡剔除(Occlusion Culling):主要是对OverDraw进行优化;
         》动画
3.代码方面;
        》对于监测的函数,可以每隔几帧执行一次;
        》通过使用InvokeRepeating函数实现定时重复调用,比如,启动0.5秒后每隔1秒执行一次DoSomeThing函数;
        》尽量少使用临时变量,特别是在Update、OnGUI等实时调用好的函数中;
        》定时进行垃圾回收;
        》优化数学运算,尽量避免使用Float,而使用Int,特别是在手机游戏中,尽量少用复杂的数学函数,比如sin,cos等函数;
        》改除法为乘法,例如:使用x*0.5f而不是x/2.0f;
4.着色器Shader

参考内容:Unity手游优化总概(蛮牛)

深入浅出聊优化:从Draw Calls到GC

某公司内部分享资料;


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值