Unity开发-你必须知道的优化建议

转载 2016年08月30日 11:30:34

链接: http://blog.csdn.net/leonwei/article/details/18042603

最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的document,而且个人习惯不喜欢看中文的资料,原汁原味的东西是最正确的,一翻译过来很多东西就都不那么准确了。于是通读了unity的官方manuel,最后面几章都是精华,里面给了非常非常多的官方的优化建议,尤其是做移动平台的开发,这些建议就是非常重要的。我将官方manuel advanced后面的那几个章节的东西提炼了一下出来,总结了这样一些优化tips:

 

1不是每个主流手机都支持的技术(就是如果可以不用就不用或有备选方案)

屏幕特效

动态的pixel光照计算(如法线)

实时的阴影

 

2优化建议

2.1渲染

1.不使用或少使用动态光照,使用light mappinglight probes(光照探头)

2.不使用法线贴图(或者只在主角身上使用),静态物体尽量将法线渲染到贴图

3.不适用稠密的粒子,尽量使用UV动画

4.不使用fog,使用渐变的面片(参考shadow gun

5.不要使用alpha –test(如那些cutout shader),使用alpha-blend代替

6.使用尽量少的material,使用尽量少的passrender次数,如反射、阴影这些操作

7.如有必要,使用Per-Layer Cull Distances,Camera.layerCullDistances

8.只使用mobile组里面的那些预置shader

9.使用occlusion culling

11.远处的物体绘制在skybox

12.使用drawcall batching

        对于相邻动态物体:如果使用相同的shader,将texture合并

        对于静态物体,batching要求很高,详见Unity Manual>Advanced>Optimizing Graphics Performance>Draw Call Batching

 

规格上限

1.      每个模型只使用一个skinned mesh renderer

2.      每个mesh不要超过3material

3.      骨骼数量不要超过30

4.      面数在1500以内将得到好的效率

2.2物理

1.真实的物理(刚体)很消耗,不要轻易使用,尽量使用自己的代码模仿假的物理

2.对于投射物不要使用真实物理的碰撞和刚体,用自己的代码处理

3.不要使用mesh collider

4.在edit->project setting->time中调大FixedTimestep(真实物理的帧率)来减少cpu损耗

2.3脚本编写

1.尽量不要动态的instantiatedestroy object,使用object pool

2.尽量不要再update函数中做复杂计算,如有需要,可以隔N帧计算一次

3.不要动态的产生字符串,如Debug.Log("boo" + "hoo"),尽量预先创建好这些字符串资源

4.cache一些东西,在update里面尽量避免search,如GameObject.FindWithTag("")GetComponent这样的调用,可以在start中预先存起来

5.尽量减少函数调用栈,用x = (x > 0 ? x : -x);代替x = Mathf.Abs(x)

6.下面的代码是几个gc“噩梦”

 String的相加操作,会频繁申请内存并释放,导致gc频繁,使用System.Text.StringBuilder代替

   function ConcatExample(intArray: int[]) {

               var line = intArray[0].ToString();

 

               for (i = 1; i < intArray.Length; i++) {

                               line += ", " + intArray[i].ToString();

               }

 

               return line;

}

在函数中动态new array,最好将一个array、传进函数里修改

function RandomList(numElements: int) {
          var result = new float[numElements];
 
          for (i = 0; i < numElements; i++) {
                         result[i] = Random.value;
          }
 
          return result;
}

 

2.4 shader编写

1.数据类型

 fixed / lowp - for colors, lighting information and normals,

half / mediump - for texture UV coordinates,

float / highp - avoid in pixel shaders, fine to use in vertex shader for position calculations.

2.少使用的函数:pow,sin,cos等

2.4 GUI

1.不要使用内置的onGUii函数处理gui,使用其他方案,如NGUI

 

3.格式

1.贴图压缩格式:ios上尽量使用PVRTCandroid上使用ETC

Unity开发-你必须知道的优化建议

最近转U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的document,而且个人习惯不喜欢看中文的资料,原汁原味的东西是最正确的,一翻译过来很多东西就都不那么准确了。于是通读了unit...
  • leonwei
  • leonwei
  • 2014年01月09日 16:03
  • 26534

你必须知道的.NET(第2版)(奋斗的小鸟)_PDF 电子书

下载地址:http://pan.baidu.com/share/link?shareid=1270688138&uk=721744522
  • tjoy2005
  • tjoy2005
  • 2013年10月09日 19:11
  • 2074

你必须知道的.NET(第2版)

王涛 编著 ISBN 978-7-121-14128-7   2011年7月出版 定价:79.00元 16开 548页 宣传语:以深入浅出的笔法,触摸.NET底层和框架的有趣角落,了解.N...
  • broadview2006
  • broadview2006
  • 2011年08月09日 17:56
  • 4255

你必须知道的.NET

主要讲.NET底层的一些语言机制,载体为C#。写得比较深入,是本好书。LOH堆 (Large Object Heap) ,用于分配大对象实例。LOH堆不会被压缩,而且只在完全GC回收时被回收 并非所...
  • s10141303
  • s10141303
  • 2015年07月03日 23:30
  • 1593

数据挖掘 你必须知道的32个经典案例(电子书)

需要完整版电子书的加QQ:404178824
  • Siphiababy
  • Siphiababy
  • 2017年09月12日 20:57
  • 560

你必须知道的261个Java语言问题笔记- Java与面向对象

Java与面向对象
  • jitingfang
  • jitingfang
  • 2017年08月07日 23:50
  • 201

你必须知道的Unity引擎知识

Unity Asia Bootcamp 台北場 – 線上觀看 Unity 今日首次在台舉辦亞洲開發者研討會 – 巴哈姆特 Unity Shader System Introduction ...
  • mengyin521
  • mengyin521
  • 2016年03月04日 09:01
  • 835

jQuery的性能优化,你知道几条

我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些。找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来 ======================...
  • pjwan
  • pjwan
  • 2016年03月25日 11:05
  • 1927

unity 游戏开发过程中需要注意和后期优化的重点方向和难点分析(大白话理论篇)

开发游戏也有近3年时间了,自己是做app移动开发出身,可能入手unity开发手机游戏,算是有点小优势,毕竟起码开始就有点unity它是怎么一步步转化为一个用户用的app。在用unity做游戏的时候,自...
  • u011866450
  • u011866450
  • 2017年05月05日 17:33
  • 1074

Unity开发IOS游戏的优化建议

最近社团筹划开发IOS平台上的游戏。考虑到设备性能的局限性,为此专门做了些研究。本文主要讲图形美术方面的注意事项,对编程等方面的建议我会陆续出文。     Unity官网针对IOS开发有比较好的...
  • gaojinjingg
  • gaojinjingg
  • 2015年12月12日 12:03
  • 337
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity开发-你必须知道的优化建议
举报原因:
原因补充:

(最多只允许输入30个字)