版本: Unity 6 (6000.0)
语言英语
  • C#

Time.timeScale

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议,并在适当的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议修改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

public static float timeScale;

描述

时间流逝的比例。

这可以用于慢动作效果或加速您的应用程序。当 timeScale 为 1.0 时,时间与实时一样快。当 timeScale 为 0.5 时,时间比实时慢 2 倍。

当 timeScale 设置为零时,如果所有函数都与帧率无关,您的应用程序就像暂停一样。负值将被忽略。

请注意,更改 timeScale 只会影响后续帧。每帧执行 MonoBehaviour.FixedUpdate 的频率取决于 timeScale。因此,要保持每帧的 FixedUpdate 回调数量不变,您还必须将 Time.fixedDeltaTime 乘以 timeScale。这种调整是否可取取决于游戏本身。

当 timeScale 设置为零时,FixedUpdate 函数和使用 WaitForSeconds 暂停的协程不会被调用。

using UnityEngine;

public class Example : MonoBehaviour { // Toggles the time scale between 1 and 0.7 // whenever the user hits the Fire1 button.

private float fixedDeltaTime;

void Awake() { // Make a copy of the fixedDeltaTime, it defaults to 0.02f, but it can be changed in the editor this.fixedDeltaTime = Time.fixedDeltaTime; }

void Update() { if (Input.GetButtonDown("Fire1")) { if (Time.timeScale == 1.0f) Time.timeScale = 0.7f; else Time.timeScale = 1.0f; // Adjust fixed delta time according to timescale // The fixed delta time will now be 0.02 real-time seconds per frame Time.fixedDeltaTime = this.fixedDeltaTime * Time.timeScale; } } }