Как узнать текущую шкалу времени? - PullRequest
1 голос
/ 29 мая 2019

Я создаю игру, которая ускоряет масштаб времени. Я хочу приостановить и возобновить его с предыдущей шкалой времени.

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 ]

4 голосов
/ 29 мая 2019

Вы можете использовать переменную для сохранения предыдущего масштаба во время паузы, а затем переназначить его в режиме без паузы.

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 перед pausegame.Если вы не назначите его, по умолчанию он будет равен 0, и вы рискуете установить Time.timescale на 0 также в unpausegame.

1 голос
/ 29 мая 2019

Попробуйте сохранить предыдущее значение в переменной (YourVariable = Time.timeScale), а затем при возобновлении установите шкалу времени, равную вашей переменной. (Time.timeScale = YourVariable)

Не знаю, очень ли это оптимизировано, но я думаю, что это сработает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...