————————————————
Unity基础知识点整理之----Time类详解
- Time.deltaTime
- Time.time
- Time.timeScale
1】Time.deltaTime :增量时间,非固定值
**官网解释**:自上一帧(只读)以来的完成时间(秒)。 也就是每帧所走过的时间
这个增量时间,在不同设备上,值不一样。
1秒30帧,Time.deltaTime = 1/30s
1秒189帧,Time.deltaTime = 1/189s
1秒N帧,Time.deltaTime = 1/N 秒
这样,1秒所走过的时间 一定等于 1秒所走过的帧数 * 每帧所走过的时间
常用案例:使某个游戏对象以每秒10米的速度移动。
公式:距离 = 时间 * 速度(此处为10米/秒)
那么正确的代码应该是:
解释说明:
众所周知,Update()是每帧执行一次。假如1秒N帧,那么1秒钟,执行N次Update(),每次Update()该游戏对象都会走(Time.deltaTime * 10)这么远。即1秒钟的时间,该游戏对象走了
s = (Time.deltaTime * 10) * N
前面说过,1秒走N帧,则Time.deltaTime = 1/N秒,上述公式计算得出无论N为何值,每秒钟走过的距离一定为10米。
s = (1/N * 10) * N = 10
错误代码示例:
如此执行,每帧(可能是1/60s,也可能是1/30s)游戏对象都会移动10米,1秒钟可能会移动600米,或者300米等等,与需求不符。
2】Time.time
**官方解释**:此帧开头的时间(仅读),但更倾向于表示游戏运行的时间
在Update()中打印可看到,每帧开始的时间如下:
注意:如果在FixedUpdate()内部调用时,则返回的时FixedTime的固定值,如下:
3】Time.timeScale:时间缩放
**官方解释**:时间流逝的尺度
默认值为1,如果设置小于1,表示时间减慢,如果设置大于1,表示时间加快,用来加速和减速游戏,比如特效播放等。
如果设置等于0,则相当于暂停。
官网链接:https://docs.unity3d.com/ScriptReference/Time.html