官方说明:https://docs.unity3d.com/ScriptReference/Time-timeScale.html
结论
1:Time.timeScale默认值为1,范围为[0,100]。Time.timeScale是全局的,不是针对某个场景的。
2:Time.timeScale影响Unity3D提供的Time类中的所有变量,除了realTimeSinceStartup
和 Time.fixedDeltaTime
3:Time.timeScale并不影响Update,LateUpdate的执行速度。只影响FixedUpdate的执行速度。当Time.timeScale=0时,FixedUpdate不再执行,但并不影响Update,LateUpdate。
- 3.1
直觉中,之所以Time.timeScale会影响Update,实质上影响的是Time类中的变量,比如在Update中根据Time.deltaTime来设置物体的位置,当Time.timeScale增加,那么Time.deltaTime值也会增加,视觉上导致物体移动的速度变快了。 - 3.2
FixedUpdate是固定时间执行的。通过ProjectSttings->Time->FixedTimestep来设置。默认值为0.02秒。即正常情况下每秒执行50次。
因为FixedUpdate是与时间有关的,因此当降低Time.timeScale后,FixedUpdate执行速度则会相应降低。
若fps很低,则会出现每帧FixedUpdate执行多次的情况。若fps高于50,会出现隔几帧FixedUpdate才执行一次的情况。因此对Input相关的侦听千万不要放到FixedUpdate中执行,会在fps高于50帧的时候,出现监测不到的情况。
其他
关于FixedUpdate可详细参考:FixedUpdate真的是固定的时间间隔执行吗?聊聊游戏定时器