版本:Unity 6 (6000.0)
语言:English
处理时间变化
捕获帧率

游戏内时间和真实时间

Time.timeScale 属性定义了游戏世界中时间流逝的速度,相对于真实时间。Time.timeScale 值为 1.0 表示游戏内时间与真实时间匹配。值为 2.0 使游戏中的时间流逝速度是现实世界中的两倍,这会加快游戏中的动作。值为 0.5 会将游戏速度降低到一半。值为零会导致游戏内时间完全停止。

Time.timeScale 实际上并没有减慢执行速度,而是更改了报告给UpdateFixedUpdate 函数的时间步长,使用 Time.deltaTimeTime.fixedDeltaTime

当您降低时间尺度时,您的Update 函数可能会像往常一样频繁地被调用,但每一帧的Time.deltaTime 值都会更小。其他脚本函数不受时间尺度的影响,因此您可以例如在游戏暂停时显示具有正常交互的 GUI。

对于诸如慢动作之类的特殊时间效果,有时需要减慢游戏时间的流逝速度,以便代码中的动画和基于时间的计算以较慢的速度发生。此外,您有时可能希望完全冻结游戏时间,例如在游戏暂停时。

Time 窗口有一个属性允许您全局设置时间尺度,但通常从脚本中使用 Time-timeScale 属性设置该值更有用。

//C# script example
using UnityEngine;
using System.Collections;

public class ExampleScript : MonoBehaviour {
    void Pause() {
        Time.timeScale = 0;
    }
    
    void Resume() {
        Time.timeScale = 1;
    }
}

其他资源

处理时间变化
捕获帧率