达到零后无法制作计时器循环



我正在处理一个计时器,该计时器从设定的数字降低,当它达到零时,它应该退回并重新开始。

private int timer;
public int duration;
private bool timerRunning = true;
void Start()
{
    StartCoroutine("TimeDown");
    timer = duration;
}
void Update()
{
    if (timer <= 0f)
    {
        timer = duration;
        Debug.Log("Timer Reset");
        timerRunning = false;
    }
    if (timerRunning == false)
    {
        StartCoroutine("TimeDown");
        timerRunning = true;
    }

    Debug.Log("Timer: " +timer);
}
IEnumerator TimeDown()
{
    while (true)
    {
        yield return new WaitForSeconds(1);
        timer--;
    }
}

我遇到的问题是使计时器循环。一旦发送"计时器重置"消息,它就不再运行计时器了。

我建议将您的逻辑大量简化为这样的东西:

private int timer;
public int duration;
void Start()
{
    timer = duration;
    StartCoroutine(TimeDown());
}
void Update()
{
    // Nothing is needed each frame so Update() should be removed
}
IEnumerator TimeDown()
{
    while (true)
    {
        if (timer <= 0)
            timer = duration;
        yield return new WaitForSeconds(1);
        timer--;
        Debug.Log("Timer: " + timer);
    }
}

,还要确保在检查员中设置了duration

最新更新