Unity中的性能优化

Unity中的性能优化

++Profiler分析器

++++通过分析器分析哪部分内容急需优化:



#1CPU优化

++1.1CPU优化分类

++++CPU优化:

    --DrawCalls

    --物理组件

    --GC(Carbage Collection垃圾回收)

    --代码质量


++1.2DrawCalls

++++Unity每次在准备数据并通知GPU渲染的过程称为一次DrawCall


++1.3Draw Call Batching(批处理)

++++多次DrawCall =>一次DrawCall


++1.4Static Batching静态批处理

++++批处理相同材质静态对象或相同纹理的静态对象。


++1.5Dynamic Batching动态批处理

++++批处理非静态对象,但要求苛刻,稍作修改就会批处理不成功,建议使用静态批处理。


++1.6、物理组件

++++优化方案1: 设置一个合适的Fixed Timestep

++++优化方案2: 不要使用MeshCollider

====>从优化的角度来看,尽量少用物理组件。


++1.7GCGarbage Collection垃圾回收)

++++优化方案: 减少CPUGC的调用。


++++字符串连接的处理。

    --因为将两个字符串连接的过程,其实是生成一个新的字符串的过程。而之前的旧的字符串自然而然就成为了垃圾。而作为引用类型的字符串,其空间是在堆上分配的,被弃置的旧的字符串的空间会被GC当做垃圾回收。

++++尽量不要使用foreach,而是使用for

    --foreach其实会涉及到迭代器的使用,而据传说每一次循环所产生的迭代器会带来24Bytes的垃圾。那么循环10次就是240Bytes

++++不要直接访问gameObjecttag属性。

    --比如if(go.tag ==“立钻哥哥”)最好换成if(go.CompareTag(“立钻哥哥”))

    --因为访问物体的tag属性会在堆上额外的分配空间。如果在循环中这么处理,留下的垃圾就可想而知了。

++++使用“池”,以实现空间的重复利用。

++++最好不用LINQ的命令,因为它们会分配临时的空间,同样也是GC收集的目标。

    --在某些情况下LINQ无法很好的进行AOT编译。

    --比如“OrderBy”会生成内部的泛型类“OrderedEnumerable”。这在AOT编译时是无法进行的,因为它只是在OrderBy的方法中才使用。所以如果你使用了OrderBy,那么在IOS平台上也会报错。


++1.8、代码质量

++++不要频繁使用GetComponent,尤其是在循环中。

++++善于使用OnBecameVisible()OnBecameInVisible()

++++使用内建的数组,比如用Vector3.zero,而不是new Vector3(0, 0, 0)

++++善于使用ref关键字。

++++将经常需要使用的属性查询缓存起来。

++++不要频繁使用InstantiateDestroy

++++习惯性的将暂时不用的GameObject设置为非激活。



#2GPU优化

++2.1、减少绘制的数目

++++保持材质的数目尽可能少。

    --这使得Unity更容易进行批处理。

++++使用纹理图集(一张大贴图里包含了很多子贴图)来代替一系列单独的小贴图。

    --它们可以更快地被加载,具有很少的状态转换,而且批处理更友好。

++++如果使用了纹理图集和共享材质,使用Renderer.sharedMaterial来代替Renderer.material

++++使用光照纹理(lightmap)而非实时灯光。

++++使用LOD,好处就是对那些离得远,看不清的物体的细节可以忽略。

++++遮挡剔除(Occlusion culling)。

++++使用mobile版的shader,简单。


++2.2、优化显存带宽

++++1OpenGL ES2.0使用ETC1格式压缩等等,在打包设置那里都有。

++++2、使用MipMap


++2.3MipMap多级纹理

++++多级纹理:

    --当屏幕变小时,自动选择合适尺寸的图片进行渲染。

    --但会多使用33%的内存。

 


#3、 内存优化

++3.1Unity3D内部的优化

++++1Resource资源不用的要删除,纹理、网格、音频等等。

++++2、在CPU压力不是特别大的时候,重置GameObject、组件等占用的内存。

++++3、在大AssetBundle的时候,可以考虑bundle的压缩。



#立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++立钻哥哥推荐的拓展学习链接(Link_Url

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/


--_--VRunSoft : lovezuanzuan--_--

猜你喜欢

转载自blog.csdn.net/vrunsoftyanlz/article/details/79254794