* 作者:闪电Y黑客
* 日期: 2019.6.11
* 功能:在Update 里进行计时标记
使用例子:
using SDHK_Tool.Dynamic;
public float Time = 3;
private SD_MarkerClock MarkerClock;
void Start()
{
MarkerClock = new SD_MarkerClock();
}
void Update()
{
if (MarkerClock.isClock(Time))
{
Debug.Log("时间到");
}
//if (MarkerClock.isClock(Time,true))
//{
// Debug.Log("时间到");
//}
}
全篇:
using System;
using SDHK_Tool.Static;
/*
* 作者:闪电Y黑客
*
* 日期: 2019.6.11
*
* 功能:在update 里进行计时标记
*/
namespace SDHK_Tool.Dynamic
{
/// <summary>
/// 计时标记器
/// </summary>
public class SD_MarkerClock
{
private DateTime LastTime;
private SD_MarkerEdge MarkerEdge ;
public SD_MarkerClock(){
MarkerEdge = new SD_MarkerEdge();
LastTime= DateTime.Now;
}
/// <summary>
/// 计时器:计算执行时间(一次性)
/// 到达指定时间返回一帧true
/// </summary>
/// <param name="targetSeconds">定时</param>
/// <returns>return : 触发标记</returns>
public bool isClock(float targetSeconds)
{
return MarkerEdge.isEdge(SS_TriggerMarker.Clock(ref LastTime, targetSeconds));
}
/// <summary>
/// 计时器:计算执行时间
/// 循环触发:到达指定时间返回一帧true,并重置时间再次计时
/// 持续触发:到达指定时间后,一直返回false
/// </summary>
/// <param name="targetSeconds">定时</param>
/// <param name="Switch">true/false(循环触发/持续触发)</param>
/// <returns>return : 触发标记</returns>
public bool isClock(float targetSeconds, bool Switch)
{
bool bit = SS_TriggerMarker.Clock(ref LastTime, targetSeconds);
if (bit && Switch) Reset_Marker();
return (Switch) ? MarkerEdge.isEdge(bit) : bit;
}
/// <summary>
/// 重置检测器
/// </summary>
public void Reset_Marker()
{
LastTime = DateTime.Now;
MarkerEdge.Reset_Marker();
}
}
}