mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +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