Таймер выполнения метода, с возможностью его прервать

Есть кнопка и метод, который выполняется 3сек. Нужно запустить метод и проверить, если кнопка нажата, то выполнить действие №1, не ожидая 3сек и заново запустить метод; если не нажата за 3сек, то выполнить действие №2 и снова запустить метод.

Пробовал это сделать с помощью корутины, но я не могу понять как прервать ожидание в 3сек после нажатия на кнопку и из-за этого выполняется действие №2.

void Start()
{
    StartCoroutine(Interval());
}

IEnumerator Interval()
{
    yield return new WaitForSeconds(3f);
    print("Действие №2"); // Действие которое должно выполняться если кнопка не нажата и прошло 3сек
    StartCoroutine(Interval());
}

public void BtnPressed()
{
    // После нажатия не ждем 3сек, а выполняем Действие №1
    StopCoroutine(Interval());
    StartCoroutine(Interval());
    print("Действие №1");
}

Можно ли это как-то провернуть? Или есть какой-то другой способ?


Ответы (0 шт):