目的:在unity中统一处理延时以及性能优化的功能
class->Timer
结构分析:
1.计时器的时长
2.计时器当前时刻
3.开始回调
4.更新回调
5.结束回调
6.回收
--------------------------------------------------------------------------------------------------------
详细代码:
public class Timer
{
private float duringTime = 0f;
private TimerCallBack onStartCallBack;
private Action<Timer> onUpdateCallBack;
private TimerCallBack onCompleteCallBack;
private float tempTime = 0;
/// <summary>
/// 倒计时
/// </summary>
public int EscapleTime { get { return (int)tempTime; } }
/// <summary>
/// 顺计时
/// </summary>
public int EntranceTime { get { return (int)(duringTime - tempTime); } }
private bool autoToKill = true;
private TimerMgr handler;
private int timerId;
private bool IsPause = false;
public Timer() { }
public Timer(TimerMgr handler, int timerId, float duringTime, TimerCallBack onStartCallBack = null)
{
this.handler = handler;
this.timerId = timerId;
this.duringTime = duringTime;
this.onStartCallBack = onStartCallBack;
if (this.onStartCallBack.IsNonNull()) { this.onStartCallBack(); }
}
public Timer OnUpdate(Action<Timer> updataCallBack = null)
{
if (!IsPause)
{
if (onUpdateCallBack == null)
{
onUpdateCallBack = updataCallBack;
}
if (tempTime >= duringTime)
{
if (onCompleteCallBack.IsNonNull()) { onCompleteCallBack(); }
if (!autoToKill)
{
tempTime = 0;
}
DestoryObject();
}
else
{
if (onUpdateCallBack.IsNonNull()) { onUpdateCallBack(this); }
tempTime += Time.deltaTime;
}
}
return this;
}
public void Pause()
{
IsPause = true;
}
public Timer SetAutoToKill(bool autoToKill)
{
this.autoToKill = autoToKill;
return this;
}
public void DestoryObject()
{
handler.DestoryObject(timerId);
}
public void OnComplete(TimerCallBack onCompleteCallBack)
{
this.onCompleteCallBack = onCompleteCallBack;
}
--------------------------------------------------------------------------------------------------------