AlicizaX/Client/Packages/com.alicizax.unity.timer/Runtime/Timer/TimerComponent.cs
陈思海 eb38f67131 init
2025-01-23 19:06:48 +08:00

97 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}