# 游戏内时间与现实时间

> The configurable relationship between in-game time and real time and the potential effects.

[Time.timeScale](/engine/6000.0/script-reference/unity-engine/time/time-scale.md) 属性定义游戏世界中时间相对于现实时间的流逝速率。`Time.timeScale` 值为 1.0 表示游戏内时间与现实时间一致。值为 2.0 会使游戏中的时间流逝速度是现实世界中的两倍，游戏中的动作会加快。值为 0.5 会将游戏速度减慢到半速。值为零会使游戏内时间完全停止。

`Time.timeScale` 实际上并不会减慢代码的执行速度，而是会通过[Time.deltaTime](/engine/6000.0/script-reference/unity-engine/time/delta-time.md) 和 [Time.fixedDeltaTime](/engine/6000.0/script-reference/unity-engine/time/fixed-delta-time.md) 来改变传递给 `Update` 和 `FixedUpdate` 函数的时间步长。

当你降低时间缩放比例时，你的 `Update` 函数被调用的频率可能依旧不变，但每一帧中 `Time.deltaTime` 的值将会变小。其他脚本函数不受时间缩放的影响，所以举例来说，当游戏暂停时，你可以显示一个能进行正常交互的 GUI。

对于诸如慢动作之类的特殊时间效果，有时放慢游戏时间的流逝是很有用的，这样代码中的动画和基于时间的计算就能以更慢的节奏进行。此外，有时可能希望完全冻结游戏时间，就像游戏暂停时一样。

[时间 (Time)](/engine/6000.0/manual/unity-editor/editor-features/comp-manager-group/class-time-manager.md) 窗口有一个属性可用于全局设置时间标度，但使用 [Time-timeScale](/engine/6000.0/script-reference/unity-engine/time/time-scale.md) 属性从脚本设置该值通常更有用：

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

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

## 其他资源##additional-resources

* [每帧更新](/engine/6000.0/manual/scripting/object-oriented-development/managing-time-and-frame-rate/time-per-frame-updates.md)
* [捕获帧率](/engine/6000.0/manual/scripting/object-oriented-development/managing-time-and-frame-rate/time-capture-frame-rate.md)
