[Unity] Time.deltaTime 增量时间

在Unity生命周期函数中有两个方法:

private void Update()
{
    
}
private void FixedUpdate()
{
    
}

Unity中的Update()函数中的代码是以帧来执行的,假设1秒有60帧,则1秒钟你的Update执行60次.

FixedUpdate()在每个固定时间执行,初始为0.02(秒),就是说每隔0.02秒会执行一次FixedUpdate()方法.这个时间可以通过编辑器菜单栏Editor ->Project Setting ->Time ->Fixed TimeStep来修改.


假设你的物体想每1秒钟移动10米,假设1秒有60帧,每一帧的时间可能是1s/60(当然不可能这么平均,每一帧的时间会不同) ,那么想用Time.deltaTime表示这一帧经历的时间,表示每秒移动10米就是下面所示的代码。

void Update() 
{
    //每秒移动物体10米
    float translation= Time.deltaTime * 10;
    transform.Translate(0, 0, translation);
}

如果还没有理解,可以使用数学的方式,假设1秒走60帧,每帧不稳定,间隔时间不一样,用t1,t2,t3...t60来表示,则t1 + t2 +t3+ ... + t60 = 1 秒.
现在你定义了一个速度V=10米/秒,想要1秒走10米,(t1 + t2 +t3+ ... + t60 )* 10 = 10米.

总结:

1秒内会执行N次Update(),就会产生N个Time.deltatime,每个Time.deltatime的时间可能都不一样.但是1秒内的N个Time.deltatime加起来一定会等于1.

本文链接:

https://www.eggmo.net/archives/190/

转载请注明文章链接地址!Thanks♪(・ω・)ノ

1 + 5 =
快来做第一个评论的人吧~