Time.deltaTime使用Unity在C#中执行什么主要功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Time.deltaTime使用Unity在C#中执行什么主要功能?相关的知识,希望对你有一定的参考价值。

我正在Unity学习游戏开发。我最近在从教程中学习的代码中使用了Time.deltaTime函数的结构。我已经对其进行了搜索,以更好地理解它,但并未了解使用它的主要目的,因为它是以专业方式进行解释的。简而言之,我想要一些简单的解释。因此,我可以从中了解。

答案

Time.deltaTime只是最后一帧和当前帧之间的时间(以秒为单位)。由于Update每帧调用一次,因此Time.deltaTime可用于以恒定的速率进行某些操作,而不管帧速率(可能会剧烈波动)。

因此,如果我们仅在更新功能中说obj.transform.position += new Vector3(offset, 0, 0);,则无论FPS如何,obj将在每帧x方向上以offset单位移动。但是,如果我们改为说obj.transform.position += new Vector3(offset * Time.deltaTime, 0, 0);,那么我们知道obj将每秒移动offset个单位,因为每一帧它都会移动offset的分数,该分数对应于该帧所花费的时间。

另一答案

here所述:

此属性提供当前和上一帧之间的时间。

例如,您可以使用它来检查您的帧率。另外,如here

例如,如果要以恒定的速度移动某些东西,请将速度乘以Time.deltaTime,您将获得自上次更新以来对象精确移动的距离(记住:距离=速度*时间)

另一答案

渲染和脚本执行需要时间。每帧都不同。如果您想要〜60 fps,您将不会获得稳定的fps-但每帧通过的时间不同。如果速度太快,您可以等待,但是比预期的速度慢时,您将无法跳过渲染。

要处理不同长度的帧,您将获得“ Time.deltaTime”。在Update中,它将告诉您完成最后一帧已经经过了几秒钟(通常是0.00132之类的分数)。

如果现在通过使用以下代码将对象从A移到B:

object.transform.position += Vector3.forward * 0.05f;

它将每帧移动0.05个单位。 100帧之后,它已移动了5个单位。

[有些个人电脑可能以60fps的速度运行此游戏,其他一些则以144 hz的速度运行。加上帧率不是恒定的。

因此您的对象将需要1-5秒移动此距离。

但是,如果您这样做:

object.transform.position += Vector3.forward * 5f * Time.deltaTime;

它将在1秒钟内移动5个单位。与帧速率无关。因为如果您具有10000 fps,则deltaTime将非常小,因此每帧只移动很小的一点。

以上是关于Time.deltaTime使用Unity在C#中执行什么主要功能?的主要内容,如果未能解决你的问题,请参考以下文章

Unity中Time.deltaTime的含义及其应用

关于Unity中Time.deltaTime的使用

Unity 为 Time.DeltaTime 创建局部变量以进行数学计算

你啥时候乘以 Unity 中的 Time.deltaTime?

你啥时候乘以 Unity 中的 Time.deltaTime?

关于Time.deltaTime的理解