using UnityEngine; using UnityEngine.Events; namespace uc { public class TimerActivity : Activity { [AutoUI] public float timerDuration = 5.0f; public float setstamp { set { timer_stamp = value; } } public float timer_stamp = 0.0f; public UnityEvent onTimesUp = new UnityEvent(); public float remainingTime { get { return Mathf.Clamp(timerDuration - (Time.time - timer_stamp), 0, timerDuration); } } private void Start() { } protected override void OnEnter() { base.OnEnter(); timer_stamp = Time.time; } protected override void OnUpdate() { base.OnUpdate(); if (IsEntering == false) return; if (IsFinished) return; if (Time.time - timer_stamp > timerDuration) { onTimesUp.Invoke(); IsFinished = true; } } protected override void OnLeave() { base.OnLeave(); } protected override void OnKilled() { base.OnKilled(); } } }