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

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

 

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

屏幕特效

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

实时的阴影

 

2优化建议

2.1渲染

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

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

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

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

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

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

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不要超过3个material

3.      骨骼数量不要超过30

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

2.2物理

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

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

3.不要使用mesh collider

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

2.3脚本编写

1.尽量不要动态的instantiate和destroy 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上尽量使用PVRTC,android上使用ETC

时间: 2024-09-11 00:02:18

Unity开发-你必须知道的优化建议的相关文章

.NET开发中性能的基本要领及优化建议

老赵的.NET程序性能的基本要领 说起Roslyn大家肯定都已经有所耳闻了,这是下一代C#和VB.NET的编译器实现.Roslyn使用纯托管代码开发,但性能超过之前使用C++编写的原生实现.Bill Chiles是Roslyn的PM(程序经理,Program Manager),他最近写了一篇文章叫做<Essential Performance Facts and .NET Framework Tips>,其中总结了几条经验,目前是个CodePlex上的PDF文件,以后可能会发布在MSDN上.

分享40条Android开发的优化建议_Android

以下是开始Android编程的好方法:         1.找一些与你想开发的功能类似的代码:         2.调整它,尝试让它变成你想要的:         3.回顾开发中遇到的问题         4.使用StackOverflow来解决遇到的问题 对每个你想实现的东西重复上述过程.采用这种方法能够激励你,因为你在保持不断迭代更新,在这个过程里面你会学到很多.当然,当你发布应用的时候你还要去做一些更深入的东西. 从一些能够正常编译的代码到成为一个应用程序,这是一个质的飞跃,比起iOS,A

关于地方门户网站的优化建议

标题之所以写"优化建议"而不是"优化方案",是因为地方门户网站的形式实在太多,而且,即使一样的系统,做出来的网站也要具体网站具体分析.但,不管学习什么,都应该学习其精神和思路,而不是学习方式.具体方式是需要结合具体情况加以利用和设计,同时用精神和思路引导未来网站的改进发展. 优化建议: 1.首页做1-2个顶级关键词,或者做网站名称这个关键词. 如: 2008找工作信息尽在51job 关键词是:找工作 镇江热线 - 镇江第一城市门户 关键词是,镇江热线 后面那个是品牌

基于WebSphere Commerce的电子商务应用性能优化(5) 参数优化建议

参数优化建议 WebSphere Commerce 是基于 WebSphere 应用程序服务器开发的大型电子商务应用程序.在初次成功安装 WebSphere Commerce 应用程序之后,安装程序已经对服务器上的关键参数进行了初始化调整.这组默认值是 WebSphere Commerce 测试团队经过反复测试总结出来的一组初始化的参数值.建议维护人员以这组默认值作 为初始值进行测试,比较测试结果与期望值的差距,从而有计划的对应用程序服务器的部分参数进行优化.如 果您正在维护的生产环境运行正常,

Dockerfile实践优化建议

本文讲的是Dockerfile实践优化建议[编者的话]Dockerfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.类似于Makefile,Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系.下面是resin.io关于Dockerfile编写经验和建议的总结. 上个月,Docker发起了Docker Global

.NET程序的性能要领和优化建议

前几天在老赵的博客上看到,Bill Chiles (Roslyn 编译器的Program Manager)写了一篇文章叫做<Essential Performance Facts and .NET Framework Tips>.这篇文章是一个14页的pdf,当时我是在地铁上在Lumia手机上看的,觉得很是不错,这里也建议大家直接下载阅读原文,我这里试着翻译一下,以加深自己印象,后面也有一些思考,以下是原文内容: ----------------------------------------

CloudDBA初体验:SQL优化建议

数据库诊断和优化过程具有相当的复杂性,通常需要专业的DBA来解决.但在云计算的今天,人力运维和支撑已经变得不可能,自动化,智能化运维和服务支持日益迫切. 阿里云数据库团队在这方面不断的探索和积累,产出了CloudDBA.其目的就是要把我们已知问题和最佳实践能够以最简单的方式告诉用户,把我们多年使用数据库的经验传承给用户,方便客户使用云上数据库,给客户带来直接的价值.CloudDBA同时也在服务着内部业务,4000+的数据库实例之前需要一个team的运维人员,到现在我们只有一个同学,运维效率大幅提

Windows Phone性能优化建议

原文:Windows Phone性能优化建议 使用background thread解码图片      在Windows Phone中支持的图片格式有jpg和png,微软建议使用png格式的图片,因为png格式的图片在解码速度上要比jpg快.那么我们怎么来控制用后台线程来解码图片呢?看下面的代码. <Image Height="100" Width="100" Margin="12,0,9,0"> <Image.Source&g

WebSphere Commerce针对特殊功能的优化建议

本文针对 http://www.aliyun.com/zixun/aggregation/3914.html">Commerce 产品中默认集成的 Solr 搜索引擎,分别就生产环境规划部署,搜索命令工具性能以及运行时定制化性能优化等方面逐一介绍. 搜索新特性是 Commerce V7 FEP2 期间引入 WebSphere Commerce® 产品的功能特性,可以提供大数据集下具有良好可拓展性的快速搜索功能.搜索新特性提供了一个完整整合的第三方搜索引擎的运行时框架,并围绕该框架提供了包括