使用 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());
}
}
我正在尝试创建一个一致的倒数计时器,它将在 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());
}
}