using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Timer : MonoBehaviour { public Image imgGauage; public Text txtCount; [Space(10)] public float limit; public bool isPlaying = false; float timeSum = 0; int timeSum2 = 0; [Range(0, 1f)] public float timeNext = 0.1f; System.Action OnEnd; public void OnInitialized(float limit, System.Action OnEnd) { this.limit = limit; this.OnEnd = OnEnd; secBefore = 0; timeSum = 0; timeSum2 = 0; imgGauage.fillAmount = 1f; txtCount.text = $"{(int)limit}"; isPlaying = true; InvokeRepeating("Elapse", timeNext, timeNext); } int secBefore = 0; [Space(10)] public SoundPlayer soundClock; void Elapse() { if (!gameObject.activeInHierarchy) CancelInvoke(); timeSum += timeNext; timeSum2 = (int)timeSum; imgGauage.fillAmount = 1 - (timeSum - timeSum2); txtCount.text = $"{(int)(limit - timeSum2)}"; if (secBefore != (int)(limit - timeSum2)) { SoundManager.Instance.EffectPlay(soundClock.gameObject); secBefore = (int)(limit - timeSum2); } if (limit < timeSum) { isPlaying = false; CancelInvoke(); if (OnEnd != null) OnEnd(); } } }