Таймер выполнения метода, с возможностью его прервать
Есть кнопка и метод, который выполняется 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");
}
Можно ли это как-то провернуть? Или есть какой-то другой способ?