我正在创建可以加速时间进度的游戏。我想暂停并恢复上一个时间范围。
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 = ??;
}
答案 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
)
我不知道这是否经过优化,但是我认为它会起作用!