unity 快速了解为什么要乘Time.deltatime

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:

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

猜你喜欢

转载自blog.csdn.net/tom_jjJack/article/details/125776001
今日推荐