Таймер обратного отсчета ускоряется и не точно с IEnumerator - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать последовательный таймер обратного отсчета, который будет получать от 1000 до 0 за 120 секунд.

Я пытался использовать этот метод:

    public IEnumerator StartCountdown()
    {
        while (scoreValue > 0)
        {
            yield return new WaitForSeconds(1.0f);
            scoreValue--;
        }
    }

но обратный отсчет по какой-то причине ускоряется с течением времени и достигает различных минусовых чисел в зависимости от значения scoreValue, а не останавливается на 0.

Например, если scoreValue равно 1000, оно достигает -380

1 Ответ

0 голосов
/ 12 сентября 2018

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

float scoreValue = 1200;
void Start () {
    StartCoroutine(StartCountdown());
}

// Update is called once per frame
void Update () {

}

public IEnumerator StartCountdown()
{
    while (scoreValue > 0)
    {
        yield return new WaitForSeconds(1.0f);
        scoreValue--;
        print("Score At " + scoreValue.ToString());
    }
}
...