Unity性能优化技巧汇总
Unity性能优化技巧汇总

汇总一些简单的性能优化技巧
Physics(物理)
减少FixedUpdate调用次数
FixedUpdate是采用固定的调用间隔:Time.fixedDeltaTime,由于是固定调用间隔,因此每帧的调用次数实际上是通过Time.deltaTime/Time.fixedDeltaTime计算出来的,如果当前帧卡顿了,那么FixedUpdate很大可能(超过Time.fixedDeltaTime)会增加调用次数,情况会更糟。
而通过设置Time.maximumDeltaTime,可以将把次数减少。最终次数为Min(Time.deltaTime, Time.maximumDeltaTime)/Time.fixedDeltaTime,例如默认为0.333,则单帧最大调用次数可以达到17次,而如果改成0.100,则单帧最大调用次数会降到5次。
有两种修改方式:
去除physics.processing
即使没有用到物理碰撞功能,但物理逻辑仍然会运行,会产生耗时。这个时候可以关闭Physics.autoSimulation来减少这部分耗时。3
关闭Physics.autoSimulation后,如果需要射线检测,则需要开启Physics.autoSyncTransforms或者手动调用**Physics.SyncTransforms()**来将Transform的变更同步到物理引擎。
Physics.autoSyncTransforms有两个常见的耗时堆栈:Physics.SyncColliderTransform和Physics.SyncRigidbodyTransform,都是在Transform发生变化时才会有计算。
Time, https://docs.unity3d.com/Manual/class-TimeManager.html ↩︎
Time.maximumDeltaTime, https://docs.unity3d.com/ScriptReference/Time-maximumDeltaTime.html ↩︎
如果Unity没有用到物理部分,应该如何关闭?, https://answer.uwa4d.com/question/6285b2a7b87a4573515d6387 ↩︎