Unity3D 游戏性能优化笔记

二次信任 提交于 2020-02-12 20:58:07

一、程序方面

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、特效上少发射点粒子。(啥时候有时间或许可以自己试下写个粒子系统)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!