使用 IEnumerator 倒数计时器加速且不准确

Countdown timer accelerating and not exact with IEnumerator

我正在尝试创建一个一致的倒数计时器,它将在 120 秒内从 1,000 变为 0。

我试过用这个方法:

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

但是由于某种原因倒计时随着时间的流逝而加速,并且根据 scoreValue 值达到不同的负数而不是停在 0。

例如,如果 scoreValue 等于 1000,则它达到 -380

正如前面的评论所述,您可能已多次列出该方法。您调用该方法的次数越多,它会以更快的速度增加。您只需要一个具有方法名称的 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());
    }
}