mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-07 16:45:10 +00:00
增加安全定时器GameTimerTick
增加安全定时器GameTimerTick
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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();
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76843c14c1344aa68863289bf7388238
|
||||
timeCreated: 1701088103
|
Reference in New Issue
Block a user