Time.timeScale 属性定义了游戏世界中时间流逝的速度,相对于真实时间。Time.timeScale
值为 1.0 表示游戏内时间与真实时间匹配。值为 2.0 使游戏中的时间流逝速度是现实世界中的两倍,这会加快游戏中的动作。值为 0.5 会将游戏速度降低到一半。值为零会导致游戏内时间完全停止。
Time.timeScale
实际上并没有减慢执行速度,而是更改了报告给Update
和FixedUpdate
函数的时间步长,使用 Time.deltaTime 和 Time.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;
}
}