Files
aibis-dream/Assets/Scripts/Framework/OtherKit/SandClock.cs
T
2025-05-21 16:47:17 +08:00

54 lines
1.3 KiB
C#

using System;
using AibisDream.Kit;
using UnityEngine;
namespace AibisDream.Framework
{
/// <summary>
/// 实现一个类似沙漏的功能,给一个命令就开始倒计时,倒计时结束执行命令
/// </summary>
public class SandClock
{
public float CountDownTime { get; private set; }
public float CurTime { get; private set; }
private readonly Action _endAction;
public SandClock(float duration, Action endAction)
{
CountDownTime = duration;
_endAction = endAction;
}
public void Start()
{
ActionKitMonoBehaviourEvents.Instance.OnUpdate.Register(OnUpdate);
CurTime = 0;
}
public void Stop()
{
CurTime = 0;
ActionKitMonoBehaviourEvents.Instance.OnUpdate.UnRegister(OnUpdate);
_endAction?.Invoke();
}
public void Pause()
{
ActionKitMonoBehaviourEvents.Instance.OnUpdate.UnRegister(OnUpdate);
}
public void Continue()
{
ActionKitMonoBehaviourEvents.Instance.OnUpdate.Register(OnUpdate);
}
private void OnUpdate()
{
CurTime += Time.deltaTime;
if (CurTime >= CountDownTime)
{
Stop();
}
}
}
}