一、美术资源优化
 
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>改除法为乘法
 

Unity3D性能优化的更多相关文章

  1. Unity3D性能优化--- 收集整理的一堆

    http://www.cnblogs.com/willbin/p/3389837.html 官方优化文档--优化图像性能http://docs.unity3d.com/Documentation/Ma ...

  2. Unity3D - 性能优化之Draw Call

    Unity3D - 性能优化之Draw Call 分类: Unity 3D2012-09-13 11:18 1002人阅读 评论(0) 收藏 举报 性能优化引擎测试脚本图形算法 Unity(或者说基本 ...

  3. Unity3D 性能优化

    Unity3D 性能优化 一.程序方面 01.务必删除脚本中为空或不需要的默认方法: 02.只在一个脚本中使用OnGUI方法: 03.避免在OnGUI中对变量.方法进行更新.赋值,输出变量建议在Upd ...

  4. Unity3D性能优化小tips——把this.transform缓存缓存起来

    Unity3D开发时中有一个小tips,这在官方的文档里其实有提及的,但不那么显眼,这里小说一下: 在MonoBehaviour进行编程时,我们经常会用this.transform, this.gam ...

  5. Unity3D性能优化之Draw Call Batching

    在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API(iOS系统中为OpenGL ES).每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销. Unity在运行时 ...

  6. Unity3D性能优化总结

    一.程序方面 01.务必删除脚本中为空或不须要的默认方法: 02.仅仅在一个脚本中使用OnGUI方法. 03.避免在OnGUI中对变量.方法进行更新.赋值,输出变量建议在Update内. 04.同一脚 ...

  7. Unity3D性能优化最佳实践(四)资源审查

    Asset auditing - 资源审查 许多项目发生效能问题的真正原因只是由于人员操作不当或是试东试西,而不小心改到导入设定影响到导入的资源.(例如最近的gitlab惨案) 对于较大规模的项目,最 ...

  8. (转)Unity3D - 性能优化之Draw Call

    Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如 ...

  9. 移动平台Unity3D 应用性能优化

    WeTest 导读 做了大概半年多VR应用了,VR由于双眼double渲染的原因,对性能的优化要求比较高,在项目的进展过程中,总结了一些关于移动平台上Unity3D的性能优化经验,供分享. 一.移动平 ...

随机推荐

  1. 安卓android sharepreference数据存储,保存输入框里面的数据

    Fragment 里面 使用轻量级的数据存储sharepreference ,代码思路清晰.保存输入框里面的数据,实现按钮保存. 个人项目中简单清晰代码: 赵存档 编写 ,可以参考: 类继承Fragm ...

  2. 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例

    初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...

  3. bootstrap-datetimepicker在火狐下报错的问题

    问题:使用bootstrap-datetimepicker这个日期插件来显示日期,但在火狐下报如下错误:TypeError: (intermediate value).toString(...).sp ...

  4. float4与half4数据类型

    连续4个32位float类型数的向量 HLSL数据类型 GPU是以四维向量为基本单位来计算的.4个浮点数所组成的float4向量是GPU内置的最基本类型.使用GPU对两个float4向量进行计算,与C ...

  5. Intellij IDEA的一些东西

    Intellij IDEA的一些东西 2016-03-19 15:26 Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + N 根据输入的 类名 查找类文件 Ctrl + Ctrl + ...

  6. 安全测试 - 抓包工具BurpSuite

    Brup SuiteBurpSuite是用于攻击web应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HTTP消息,持久 ...

  7. UOJ #58 【WC2013】 糖果公园

    题目链接:糖果公园 听说这是一道树上莫队的入门题,于是我就去写了--顺便复习了一下莫队的各种姿势. 首先,我们要在树上使用莫队,那么就需要像序列一样给树分块.这个分块的过程就是王室联邦这道题(vfle ...

  8. [LeetCode] Sliding Window Maximum 滑动窗口最大值

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  9. Mysql查询——学习阶段

    1.开篇 搞开发的都知道,当数据量很大的时候,我们的代码逻辑的简单性就显得十分重要,否则处理起来就需要花费相当多的时间.另外还有一个地方需要注意的是我们写的sql语句. 一个拥有多年开发的资深开发者可 ...

  10. mysql-You can’t specify target table for update in FROM clause错误

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...