1:设置Time.timeScale为0将会暂停所有和帧率无关的事情,这些主要是指所有的物理事件和依赖时间的函数,刚体力和速度等,FixUpdate会被暂停,因为FixUpdate函数是根据时间来进行更新的。
2:Update函数本身的执行是不会受Time.TimeScale影响的 Update是依赖机器的,它的调用次数和机器渲染一样快慢,跟Time.TimeScale无关,当Time.TimeScale == 0时 所有跟时间相关的事情都被暂停了,但是游戏仍在渲染,无论Time.TimeScale等于多少,Update和LateUpdate 都会执行
3:Time.TimeScale会影响Time.time的时间,比如Time.TimeScale = 2时 ,Time.time增长速度也会变成2 , 如果你想取到游戏的实际时间,那么使用Time.timeSinceLevelLoad 就可以,前提是必须在 Awake() 方法以后再取,如果在 Awake() 方法里面取 Time.realtimeSinceStartup 会取出一个错误的值,在 Start 方法里面取的话就正常了。如果游戏暂停以后想在暂停界面上继续播放一些不受 Time.timeScale 影响的动画,那么我们就需要用到 Time.realtimeSinceStartup。
总结: Time.timeScale 影响的是 Unity 的游戏时间缩放比例。Unity 里面所有跟时间有关系的东西都是根据 timeScale 来演算的。
参考: 马三大佬的案例https://www.cnblogs.com/msxh/p/6413577.html