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?