Unity iOS性能优化策略

一、程序方面

1、尽量少new对象,减少GC的次数,可以使用对象池技术。

2、使用UGUI时,不要通过界面的z轴来做界面排序,这貌似会导致UGUI的批处理失效。

3、尽量少使用GetComponent(),频繁调用的可以用一个变量在开始时把component存起来。

4、不使用OnGui()

5、尽量少实例化游戏对象,同1,可使用对象池技术。

6、要构建字符串时,尽量使用StringBuilder代替string的默认相加操作,减少产生临时字符串。

7、将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉。



二、渲染方面

1、尽量使用光照贴图,可以节省cpu性能,因为实时光照要一直计算,很耗费cpu性能。

2、尽量不使用mesh collider,因为mesh collider相比普通的collider包含大量顶点,计算量很大。

3、把多张小图打包成一张图集,减少draw call调用。

4、尽量使用共享材质,这样的话无论如何修改材质的属性,内存中都只会占用一份,但如果使用普通的材质,每次改动材质属性Unity都会new一个新的材质出来,并在这个材质上修改。这些材质会一直占用着内存,直到调用Resources.UnloadUnusedAssets()的时候才释放,会导致内存 泄露。

5、尽量少使用逐像素光,因为像素数远比顶点数要多,会很耗费性能。

6、使用LOD(level of detail, 多层次细节),它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。缺点是增加了内存。

7、使用Mipmap,类似LOD,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源。使用Mipmap后,贴图会根据摄像机距离的远近,选择使用不同精度的贴图。缺点:会占用内存,因为mipmap会根据摄像机远近不同而生成对应的八个贴图,所以必然占内存!优点:会优化显存带宽,用来减少渲染,因为可以根据实际情况,会选择适合的贴图来渲染,距离摄像机越远,显示的贴图像素越低,反之,像素越高!

8、使用shader。

9、降低模型的片面数,降低模型的骨骼数量,降低贴图的大小。

10、尽量少使用阴影,静态物体可以通过使用阴影贴图来减少阴影计算量。

11、特效上少发射点粒子。(啥时候有时间或许可以自己试下写个粒子系统)



三、UI方面

1、因为一个canvas里的的内容会合并成一个mesh一起绘制,而当canvas里的内容发生改变时会引起redraw(重绘),所以如果一个canvas里的内容过于复杂时,重绘花费的代价会很大,所以最好把一个复杂的canvas拆分成多个子canvas,这样当某块内容发生变化的时候,只会重绘发生变化的canvas而不会重绘所有canvas。同时又不能划分过多的canvas,因为这样的话drawcall会上升。所以最好把握好一个度。

2、在1的基础上,把需要经常改变的canvas内容和不需要经常改变的canvas内容分离开来,比如一个界面的公告很少改变,而游戏的摇杆部分会经常因为玩家的操作而需要重新绘制,所以可以把公告作为静态canvas内容,把摇杆作为动态canvas内容分离开来。

3、把一个canvas里用到的资源放到一个图集里。

   

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空