using System.Collections; using UnityEngine; using UnityEngine.UI; namespace Unity.Multiplayer.Samples.BossRoom { public class AbilityUI : MonoBehaviour { public string key; public Image CoolDownImg; public GameObject CoolDownImgParent; private Coroutine stopWatchRoutine; private bool isCooldownActive = false; public void StopWatchFiller(float coolDownTime) { if (stopWatchRoutine != null) { StopCoroutine(stopWatchRoutine); } stopWatchRoutine = StartCoroutine(StopWatchFillerRoutine(coolDownTime)); } private IEnumerator StopWatchFillerRoutine(float coolDownTime) { isCooldownActive = true; CoolDownImgParent.SetActive(true); CoolDownImg.fillAmount = 1; float elapsedTime = 0; while (elapsedTime < coolDownTime) { // Check if cooldown is still active before updating UI if (!isCooldownActive) { CoolDownImgParent.SetActive(false); yield break; } elapsedTime += Time.deltaTime; CoolDownImg.fillAmount = 1 - (elapsedTime / coolDownTime); yield return null; } CoolDownImgParent.SetActive(false); isCooldownActive = false; stopWatchRoutine = null; } /// /// Cancels cooldown UI immediately if the ability is available before the countdown ends. /// public void CancelCooldownUI() { if (stopWatchRoutine != null) { StopCoroutine(stopWatchRoutine); stopWatchRoutine = null; } CoolDownImgParent.SetActive(false); isCooldownActive = false; } } }