Невозможно сделать цикл таймера после нажатия нуля - PullRequest
1 голос
/ 22 мая 2019

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

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--;
    }
}

Проблема, которую я получаю, заключается в том, чтобы заставить таймер зацикливаться. Как только он отправляет сообщение «Сброс таймера», он больше не запускает таймер.

1 Ответ

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

Я предлагаю значительно упростить вашу логику до чего-то подобного:

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.

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