首页 > 解决方案 > 如何获取当前时间刻度?

问题描述

我正在创建一个加速时间尺度的游戏。我想暂停并以以前的时间尺度恢复它。

private IEnumerator Speedup()
{
    yield return new WaitForSeconds(10f);
    Time.timeScale+=0.05f;
    StartCoroutine(Speedup());
}
public void pausegame()
{
    Time.timeScale = 0;
}

public void unpausegame()
{
    Time.timeScale = ??;
}

标签: c#unity3d

解决方案


您可以在暂停期间使用变量存储先前的比例,然后在取消暂停时重新分配它。

private float _previousScale = 1;

private IEnumerator Speedup()
{
    yield return new WaitForSeconds(10f);
    Time.timeScale += 0.05f;
    StartCoroutine(Speedup());
}

public void pausegame()
{
    _previousScale = Time.timeScale;
    Time.timeScale = 0;
}

public void unpausegame()
{
    Time.timeScale =  _previousScale;
}

进一步说明。我之所以设置private float _previousScale = 1;是因为我看到一个问题,因为您在 pausegame 之前调用 unpausegame。如果您没有分配它,它将默认为 0,并且您可能在 unpausegame 中也将 Time.timescale 设置为 0。


推荐阅读