一、程序方面
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、特效上少发射点粒子。(啥时候有时间或许可以自己试下写个粒子系统)
来源:https://www.cnblogs.com/winsons/p/12300796.html