97 lines
3.3 KiB
C#
97 lines
3.3 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using AlicizaX.Runtime;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
namespace AlicizaX.Timer.Runtime
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 计时器组件。
|
|||
|
|
/// </summary>
|
|||
|
|
[DisallowMultipleComponent]
|
|||
|
|
[AddComponentMenu("Game Framework/Timer")]
|
|||
|
|
[UnityEngine.Scripting.Preserve]
|
|||
|
|
public class TimerComponent : GameFrameworkComponent
|
|||
|
|
{
|
|||
|
|
ITimerManager _timerManager;
|
|||
|
|
|
|||
|
|
protected override void Awake()
|
|||
|
|
{
|
|||
|
|
ImplementationComponentType = Utility.Assembly.GetType(componentType);
|
|||
|
|
InterfaceComponentType = typeof(ITimerManager);
|
|||
|
|
base.Awake();
|
|||
|
|
_timerManager = SysModuleCenter.GetModule<ITimerManager>();
|
|||
|
|
if (_timerManager == null)
|
|||
|
|
{
|
|||
|
|
Log.Fatal("Timer manager is invalid.");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 添加一个定时调用的任务
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="interval">间隔时间(以秒为单位)</param>
|
|||
|
|
/// <param name="repeat">重复次数(0 表示无限重复)</param>
|
|||
|
|
/// <param name="callback">要执行的回调函数</param>
|
|||
|
|
/// <param name="callbackParam">回调函数的参数(可选)</param>
|
|||
|
|
public void Add(float interval, int repeat, Action<object> callback, object callbackParam = null)
|
|||
|
|
{
|
|||
|
|
_timerManager.Add(interval, repeat, callback, callbackParam);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 添加一个只执行一次的任务
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="interval">间隔时间(以秒为单位)</param>
|
|||
|
|
/// <param name="callback">要执行的回调函数</param>
|
|||
|
|
/// <param name="callbackParam">回调函数的参数(可选)</param>
|
|||
|
|
public void AddOnce(float interval, Action<object> callback, object callbackParam = null)
|
|||
|
|
{
|
|||
|
|
_timerManager.AddOnce(interval, callback, callbackParam);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 添加一个每帧更新执行的任务
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="callback">要执行的回调函数</param>
|
|||
|
|
public void AddUpdate(Action<object> callback)
|
|||
|
|
{
|
|||
|
|
_timerManager.AddUpdate(callback);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 添加一个每帧更新执行的任务
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="callback">要执行的回调函数</param>
|
|||
|
|
/// <param name="callbackParam">回调函数的参数</param>
|
|||
|
|
public void AddUpdate(Action<object> callback, object callbackParam)
|
|||
|
|
{
|
|||
|
|
_timerManager.AddUpdate(callback, callbackParam);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 检查指定的任务是否存在
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="callback">要检查的回调函数</param>
|
|||
|
|
/// <returns>存在返回 true,不存在返回 false</returns>
|
|||
|
|
public bool Exists(Action<object> callback)
|
|||
|
|
{
|
|||
|
|
return _timerManager.Exists(callback);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 移除指定的任务
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="callback">要移除的回调函数</param>
|
|||
|
|
public void Remove(Action<object> callback)
|
|||
|
|
{
|
|||
|
|
_timerManager.Remove(callback);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public List<TimerInfo> GetTimerInfos()
|
|||
|
|
{
|
|||
|
|
return _timerManager.GetTimerInfos();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|