在我的一个项目中,接触到了Time.timescale,同时也出现了一些Bug,所以写下这篇博文。
首先先了解一下Time.timescale:
1.timeScale不会影响Update和LateUpdate的执行速度
2.FixedUpdate是根据时间来的,所以timeScale只会影响FixedUpdate的速度
那么当Time.timescale = 0时;update,Lateupdate,Fixedupdate会不会执行呢?
答案是update,Lateupdate会执行;但是Fixedupdate不会执行;
当Time.timescale = 1时,此时Unity的时间机制是正常的。
update,Lateupdate,Fixedupdate在同一时间内都执行了一次。
当Time.timescale = 5时,update,Lateupdate,在同一时间内都执行了一次,Fixedupdate执行了五次;
FixedUpdate被调用的时间也是不受timescale影响的,只跟我们在Unity的Edit下的projecSetting里面设置的fixedTimestep有关系,那为什么跑了5次呢?因为timescale=5,时间被拉长,在这么长的时间里FixedUpdate按照fixedTimestep来计算总共跑了5次,所以也可以说FixedUpdate是受到timescale影响的。
也可以这么说Time.timescale可以控制游戏的速度;
当它等于0时,所有依赖于Time 的逻辑或者刚体速度会被冻结,也就是不会运行这些逻辑;
当它等于1时,游戏时间恢复正常;
当它等于n时,游戏此时的时间倍速为n;
(个人拙见,欢迎大佬指正~)