Unity3d 性能优化

来源:互联网 发布:条数计算java 编辑:程序博客网 时间:2024/06/18 07:31

         众所周知,Unity3d 的性能优化是一个非常复杂的话题,根据不同的分类标准,可以分为不同的项目,根据以往参考别人的看法,本文将其归纳为为三大类:


    CPU

    

          DrawCall

                提起优化,就不得不提DrawCall,DrawCall 可以归纳为cpu向gpu的一次调用。

                Batching: 

                      Static Batching

                      Dynamic Batching

 

               将图片打包成图集:

          GC

               gc的调用时机,当堆内存不足是调用,或者自己调用

               

          

                                          


          

            

            


       GPU

             occlusion:

              

              减少顶点的数目:

                     优化模型:


              减少片元的数目:


       内存:


程序方面:

      01,务必删除脚本中为空或不需要的默认方法。

              查阅过一些资料,也曾向一位大牛问过,但是说实话,没找到让我信服答案,不过这条准则肯定是没毛病的。

      02,只在一个脚本中使用OnGUI方法。

               你就当这是废话吧!


      03,避免在OnGUI中对变量,方法进行更新,赋值。输入变量建议在upadate中进行。

              通过脚本测试发现,OnGUI的调用频率为update的2倍,通过查阅其它相关资料发现,有人说是至少两倍                   (未验证)

      04,不要频繁的去获取组件,如果需要,最好声明未变量。

               其实这里指的就应该是getcomponent, 客观的讲,我并没有进行相关的测试,从网上得到的结果是:                            Getcompont 有三个重载的版本,getcompont<T> ()  getComponet(System.type  type); getComponet(string                str); 并且它们三个的效率是依次递减的,另外最后一个还涉及的C#的反射机制,故效率可以说是低的可                      以。不行你试试,反正我暂时是懒得验证了!

      05,尽量使用整型数字,因为IPhone的浮点数计算能力很差

                后半句,我不确定,我从来都不屑于用Iphone, 没错,你猜的很对,太穷了,根本就买不起啊

      06,  尽量少的进行实例化(instantiate)对象,对于确实需要频繁重新生成的物体,可以使用对象池。

                这个我是深有体会,确实应该如此!记住就行,优化必备

      

   

             

原创粉丝点击