Time.deltatime是什么?
一个值,表示在当前机器上每帧之间的间隔时长,如1秒60帧的机器Time.deltatime=1/60;
乘上Time.deltatime的目的是什么?
为了在帧率不同的机器上呈现相同的效果(即脚本中设定的值)
原理是什么呢?
以在Update为例,比如:
A电脑在1秒内Update可以执行100次,即100帧,B电脑则为60帧.
此时在Update中有一个方法,每一次调用都会+1;
当不乘Time.deltatime时:
在A电脑中1秒钟+1执行100次,最终+100每秒
在B电脑中1秒钟+1执行60次,最终+60每秒
当乘上Time.deltatime时:
在A电脑中1秒钟+1 * Time.deltatime(1/100)执行100 次,即最终+1每秒
在B电脑中1秒钟+1 * Time.deltatime(1/60)执行60次,即最终+1每秒
可以发现当乘上该值后,在不同的机器上每秒的变化都将是相等的。
总结:
Time.deltatime就有点像一个补偿机制,使得帧数高的机器会乘上一个更小的系数,从而弥补因为帧率而导致的不平衡。
易错小分享:
并不是所有的变化量都可以乘上Time.deltatime,比如在角色的移动脚本中对Rigidbody的velocity修改时乘上Time.deltatime就会使得角色无法移动:
而同Rigidbody的MovePosition则需要乘上Time.deltatime:
扫描二维码关注公众号,回复:
14440646 查看本文章

关键在于前者以秒为单位,后者以帧为单位【查阅自unityAPI】。