如何获得当前时间表?

时间:2019-05-29 13:59:47

标签: c# unity3d

我正在创建可以加速时间进度的游戏。我想暂停并恢复上一个时间范围。

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 = ??;
}

2 个答案:

答案 0 :(得分:4)

您可以使用一个变量在暂停期间存储以前的比例,然后在暂停状态下重新分配它。

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;是因为我看到一个问题,以防您在暂停游戏之前调用unpausegame。如果您没有分配它,它将默认为0,并且在unpausegame中还可能将Time.timescale设置为0。

答案 1 :(得分:1)

尝试将先前的值存储在变量(YourVariable = Time.timeScale)中,然后在恢复时将时间范围设置为等于变量。 (Time.timeScale = YourVariable

我不知道这是否经过优化,但是我认为它会起作用!