Time.timeScale 属性定义游戏世界中时间相对于现实时间的流逝速率。Time.timeScale 值为 1.0 表示游戏内时间与现实时间一致。值为 2.0 会使游戏中的时间流逝速度是现实世界中的两倍,游戏中的动作会加快。值为 0.5 会将游戏速度减慢到半速。值为零会使游戏内时间完全停止。
Time.timeScale 实际上并不会减慢代码的执行速度,而是会通过Time.deltaTime 和 Time.fixedDeltaTime 来改变传递给 Update 和 FixedUpdate 函数的时间步长。
当你降低时间缩放比例时,你的 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;
}
}