public void FinishCooldown() { if (Cooldown == 0) { return; } CooldownRemaining = 0; CooldownFinished?.Invoke(this); }
public void TickCooldown() { if (!IsOnCooldown) { return; } CooldownRemaining--; CooldownUpdated?.Invoke(this); if (CooldownRemaining > 0) { return; } CooldownRemaining = 0; CooldownFinished?.Invoke(this); }
//NOTE: корутина вместо асинка чтобы ждать время игры, а не реалтайм private IEnumerator WaitCooldown() { CooldownStarted?.Invoke(); tracker.Dispose(); float currentTime = 0f; while (currentTime <= CoolDownTime) { CooldownUpdated?.Invoke(currentTime); currentTime += Time.deltaTime; yield return(null); } tracker.Init(); CooldownFinished?.Invoke(); }