SD-20250415ABSO\Administrator 321e38cb79 冠军框架迁移
2025-04-18 19:18:15 +08:00

60 lines
1.5 KiB
C#

using UnityEngine;
namespace TEngine
{
public class GameTimerTick
{
protected OnTick Handle;
protected float LastTime;
protected float Interval;
protected bool ResetInterval = true;
public GameTimerTick(float interval, OnTick tickHandle) => Init(interval, true, true, tickHandle);
public GameTimerTick(float interval, bool immediately, OnTick tickHandle) => Init(interval, immediately, true, tickHandle);
public GameTimerTick(float interval, bool immediately, bool resetInterval, OnTick tickHandle)
{
Init(interval, immediately, resetInterval, tickHandle);
}
private void Init(float interval, bool immediately, bool resetInterval, OnTick tickHandle)
{
Interval = interval;
Handle = tickHandle;
ResetInterval = resetInterval;
if (immediately)
{
return;
}
LastTime = Time.time;
}
public void OnUpdate()
{
float time = Time.time;
if (LastTime + Interval >= time)
{
return;
}
if (ResetInterval)
{
LastTime = time;
}
else if (LastTime == 0.0)
{
LastTime = time;
}
else
{
LastTime += Interval;
}
Handle();
}
public delegate void OnTick();
}
}