AlicizaX/Client/Packages/com.alicizax.unity.timer/Runtime/Timer/TimerComponent.cs

97 lines
3.3 KiB
C#
Raw Normal View History

2025-01-23 19:06:48 +08:00
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();
}
}
}