Unity3D优化问题
一个项目的制作过程一旦完成,便需要面临的优化问题就会有很多。
-
优化时需要注意的3个方面:
- (1).CPU方面 (2).GPU方面 (3).内存方面
CPU方面的优化
对DrawCalls的优化
1.DrawCalls : 每个物体尽量减少渲染次数,多个物体最好一起渲染。
(1).使用Draw Calls Batahing,也就是描绘调用批处理。Unity3D在运行时可以将一些物体进行合并,从而用一个描绘调用来渲染他们。
(2).通过把纹理打包成图集尽量减少材质的使用。
(3).尽量少的使用反光、阴影之类的效果,因为那会使物体多次渲染。
2.Static Batching静态批处理
(1).静态批处理操作允许引擎对任意大小的几何物体进行批处理操作来降低绘制调用(只要这些物体不移动,并且拥有相同的材质)。因此,静态批处理比动态批处理更加有效,你应该尽量低使用它,因为它需要更少的CPU开销。
(2). 明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放,在检测器(Inspector)中勾选“Static”,Unity在运行时会对static物体进行自动优化处理,所以应该尽可能将非运行实体勾上static标签。
3.动态批处理
(1). 批处理动态物体需要在每个顶点上进行一定的开销,所以动态批处理仅支持小于900顶点的网格物体。
(2). 如果你的着色器使用顶点位置,法线和UV值三种属性,那么你只能批处理300顶点以下的物体;
如果你的着色器需要使用顶点位置,法线,UV0,UV1和切向量,那你只
能批处理180顶点以下的物体。
请注意:属性数量的限制可能会在将来进行改变。
(3).不要使用缩放尺度(scale)。分别拥有缩放尺度(1,1,1)和(2,2,2)的两个物体将不会进行批处理。
(4).统一缩放尺度的物体不会与非统一缩放尺度的物体进行批处理。
使用缩放尺度(1,1,1)和 (1,2,1)的两个物体将不会进行批处理,但是使用缩放尺度(1,2,1)和(1,3,1)的两个物体将可以进行批处理。
(5).使用不同材质的实例化物体(instance)将会导致批处理失败。
(6). 拥有lightmap的物体含有额外(隐藏)的材质属性,比如:lightmap的偏移和缩放系数等。所以,拥有lightmap的物体将不会进行批处理(除非他们指向lightmap的同一
部分)
(7).预设体的实例会自动地使用相同的网格模型和材质。
对物理组件的优化
<