@yraiv

Как остановить выполнение корутины?

Мне необходимо остановить выполнение корутины. Как это сделать?
private void OnEnable()
    {
        EventBus.BombWasDied += DisableTimer;
        EventBus.onBombFallInGlass += DisableTimer;

    }


    private void OnDisable()
    {
        EventBus.BombWasDied -= DisableTimer;
        EventBus.onBombFallInGlass -= DisableTimer;

    }



    private void DisableTimer()
    {
        StopCoroutine(TimerExplosionCoroutine); // попытка выключить таймер даёт null
    }




    private void ChangeValueTimerForExplosion()
    {
      Coroutine TimerExplosionCoroutine =  StartCoroutine(TimerSliderCoroutine()); // пытался по урокам объявить, чтоб потом остановить 
    }


    IEnumerator TimerSliderCoroutine()
    {
        if (TimeForeExplosion > CurrentTimeForeExplosion)
        {
            CurrentTimeForeExplosion++;
            _sliderTimeExplosion.value--;
            yield return new WaitForSeconds(.1f);
            StartCoroutine(TimerSliderCoroutine());
        }
        else
        {
            EventBus.BombTimeNull?.Invoke();
            yield break;

        }

    }

    
}
  • Вопрос задан
  • 148 просмотров
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Так проверь TimerExplosionCoroutine на нул, прежде чем использовать.

yield return new WaitForSeconds(.1f);
StartCoroutine(TimerSliderCoroutine());

Как эту курутину собираешься останавливать? А главное зачем её вообще создавать ещё раз, когда надо использовать цикл.
Ответ написан
mopsicus
@mopsicus
У вас TimerExplosionCoroutine локальная переменная
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы