using System; using Stary.Evo; using UnityEngine; using UnityEngine.Serialization; namespace Stary.Evo { public class TimerController : MonoBehaviour, IController { public string TimerName => gameObject.name; private bool isStart = false; /// /// 持续时间 /// private float timeDuration; /// /// 时间到达的事件 /// private Action onArrivalTimeComplete; /// /// 持续时间最大阈值 /// public float timeDurationMax; public void StartTimer(float timeDurationMax, Action onArrivalTimeComplete) { this.timeDurationMax = timeDurationMax; this.onArrivalTimeComplete = onArrivalTimeComplete; timeDuration = 0; isStart = true; } private void Update() { if (isStart) { timeDuration += Time.deltaTime; if (timeDuration >= timeDurationMax) { onArrivalTimeComplete?.Invoke(); this.GetSystem().RemoveTimer(TimerName); } } } public IArchitecture GetArchitecture() { ITimerSystem system = this.GetSystem(); return system.GetArchitecture(); } } }