• Unity3D性能优化


    一、美术资源优化
     
    1.动态物体,角色、怪物、NPC
    (1)控制面的数量,300-2000个
    (2)控制Skinner Mesh Renderer的数量,1个
    (3)控制材质数量,1-3个
    (4)控制骨骼的数量,小于30个
    2.静态物体
    (1)控制网格顶点数,少于500个
    (2)标记为static,静态批处理
    (3)移除不需要的组件
    3.自带地形
    (1)控制地形的分辨率,高度图尺寸小于257
    (2)地形纹理中尽量使用少的混合纹理数,不要超过4个
    4.纹理
    (1)格式,采用压缩格式
    (2)尺寸,长宽小于1024
    (3)建议使用MipMap,有可能增加程序大小,但会提高渲染效率
    5.音频
    (1)长音乐(背景音乐),使用ogg或mp3格式
    (2)短音乐,使用wav或aif格式的未压缩格式
     
    二、引擎优化(设置)
     
    1.光源
    (1)控制光源的数量,数量越多,drawcall越多
    (2)控制Important光源的数量(实时作用于动态物体),1个或0个
    (3)Pixel Light Couht(动态物体上作用的光源数量,不包含mportant光源),1-2个
    2.相机
        裁剪平面,根据不同场景进行不同的修改
    3.粒子
    (1)屏幕上的粒子总数,建议小于200个
    (2)每个粒子发射器发射的粒子总数,建议小于50个
    (3)粒子的大小,粒子的size应尽可能的小
    (4)对于非常小的粒子,在粒子的纹理中可以去除Alpha通道
    4.物理引擎
    (1)尽量使用Sphere Collider/Box Collider,避免使用Mesh Collider
    5.渲染
    (1)避免使用Alpha Test和Alpha Blend,Alpha Test的性价比较低,可能的话使用Alpha Blend代替Alpha Test
    (2)将使用的Alpha Test和Alpha Blend的像素数降至最低,尽量不要超过两个两个屏幕的像素数
     
    三、DrawCall
     
    1.Static Batching
    原理:<1>静态VertexBuffer + 动态IndexBuffer
               <2>将同种材质的物体合并在一个大的VertexBuffer中
               <3>在运行时,通过视锥裁剪来动态的改变IndexBuffer
    注意:使用static batching后会额外增加内存开销来存储Batch后的数据
     
    2.Dynamic Batching,对于相同材质的动态物体,Unity会自动对其进行batching
    原理:<1>动态VertexBuffer + 动态IndexBuffer
     
    注意:<1>目前之支持小于900顶点的网格物体
          <2>如果shader中使用了Position/Normal/UV三种属性,只能Batching 300顶点以下数的物体;如果使用Position/Normal/UV/UV1/Tangent等属性,则只能Batching 180顶点以下的物体
          <3>缩放物体无法与非缩放物体进行Batching
     
    四、纹理合并
     
    五、遮挡剔除,Occlusion Culling
     
    六、代码.
    if(Time.frameCount % 6 == 0){ }
    (2)减少使用临时变量,尤其是在Update方法中
    (3)定期垃圾回收
    (3)优化数学运算:<1>减少使用float,使用int
                       <2>减少使用复杂的数学函数,比如sin/cos等函数
                       <3>改除法为乘法
     
  • 相关阅读:
    查找整数
    Ling To Xml 学习之 对xml增、删、改、查
    JS获得鼠标
    xml之数据岛绑定到表格
    C# 三种序列化[转]
    编程字体
    Oracle 、C#
    提示信息Javascript
    几个好用的日历控件
    收藏网站
  • 原文地址:https://www.cnblogs.com/fuyunzzy/p/5300272.html
Copyright © 2020-2023  润新知