Files
BingoGrassland/Assets/BingoSun/Scripts/Isfv/IsfvKit.cs
T

139 lines
3.0 KiB
C#
Raw Normal View History

2026-04-20 13:49:36 +08:00
using System;
namespace BingoBrain.Core
{
using UnityEngine;
using System.Collections;
public static class IsfvKit
{
private static IsfvBehaviour _sIsfvBehaviour;
private static readonly object SynClock = new object();
private static IsfvBehaviour MIsfvBehaviour
{
get
{
if (_sIsfvBehaviour != null)
{
return _sIsfvBehaviour;
}
lock (SynClock)
{
if (_sIsfvBehaviour != null)
{
return _sIsfvBehaviour;
}
_sIsfvBehaviour = IsfvBehaviour.Instance;
if (_sIsfvBehaviour != null)
{
_sIsfvBehaviour.name = "[ AsyncKit ]";
}
}
return _sIsfvBehaviour;
}
}
public static Coroutine StartCoroutine(IEnumerator enumerator)
{
return MIsfvBehaviour.StartCoroutine(enumerator);
}
public static void StopCoroutine(Coroutine methodName)
{
MIsfvBehaviour.StopCoroutine(methodName);
}
public static void StopAllCoroutine()
{
MIsfvBehaviour.StopAllCoroutines();
}
public static void StartAction(string key, IsfvData.DealMethod method, float delayTime, int repeat = 1)
{
var temp = new IsfvData { dealMethod = method, DelayTime = delayTime, RepeatCount = repeat };
MIsfvBehaviour.AddAsyncData(key, temp);
}
public static void StopAction(string key)
{
MIsfvBehaviour.RemoveAsyncData(key);
}
public static void StopAllAction()
{
MIsfvBehaviour.RemoveAllAction();
}
public static void StartUpdateAction(string key, IsfvData.DealMethod method, float time)
{
var temp = new IsfvData { dealMethod = method, DelayTime = time, RepeatCount = -1 };
MIsfvBehaviour.AddUpdateAction(key, temp);
}
public static void StopUpdateAction(string key)
{
MIsfvBehaviour.RemoveUpdateAction(key);
}
public static void DelayedAction(float delayTime, IsfvData.DealMethod method, int repeat = 1,
string key = null)
{
key ??= $"{nameof(DelayedAction)}{DateTime.Now.Millisecond}";
var temp = new IsfvData
{
dealMethod = () =>
{
method?.Invoke();
ClearDelayedAction(key);
},
DelayTime = delayTime, RepeatCount = repeat
};
MIsfvBehaviour.AddAsyncTempData(key, temp);
}
public static void ClearDelayedAction(string key)
{
MIsfvBehaviour.RemoveAsyncTempData(key);
}
}
}