81 lines
2.2 KiB
C#
81 lines
2.2 KiB
C#
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.Events;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ӳٴ<D3B3><D9B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public class DelayedProcessingManager : SingletonManager<DelayedProcessingManager>
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Э<><D0AD><EFBFBD>ֵ<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public Dictionary<string,Coroutine> coroutines=new Dictionary<string, Coroutine>();
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ӳٶ<D3B3><D9B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="mono">Ҫ<>ӳٵ<D3B3>MonoBehaviour<75><72></param>
|
|||
|
|
/// <param name="delay"><3E>ӳٶ<D3B3><D9B6><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="unityAction">Ҫִ<D2AA>еĺ<D0B5><C4BA><EFBFBD></param>
|
|||
|
|
public void DelayDoSecond(MonoBehaviour mono,float delay,UnityAction unityAction)
|
|||
|
|
{
|
|||
|
|
mono.StartCoroutine(E_DelayDoSecond(delay, unityAction));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ӳٶ<D3B3><D9B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ð<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void ResetDelayDoSecond(string id,MonoBehaviour mono,float delay,UnityAction unityAction)
|
|||
|
|
{
|
|||
|
|
if (coroutines.ContainsKey(id))
|
|||
|
|
{
|
|||
|
|
mono.StopCoroutine(coroutines[id]);
|
|||
|
|
coroutines.Remove(id);
|
|||
|
|
}
|
|||
|
|
Coroutine coroutine = mono.StartCoroutine(E_DelayDoSecond(delay, unityAction));
|
|||
|
|
coroutines.Add(id, coroutine);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ӳٶ<D3B3><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|||
|
|
/// </summary>
|
|||
|
|
private IEnumerator E_DelayDoSecond(float delay, UnityAction unityAction)
|
|||
|
|
{
|
|||
|
|
yield return new WaitForSeconds(delay);
|
|||
|
|
unityAction?.Invoke();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ӳٶ<D3B3><D9B6><EFBFBD>֡
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="mono">Ҫ<>ӳٵ<D3B3>MonoBehaviour<75><72></param>
|
|||
|
|
/// <param name="delay"><3E>ӳٶ<D3B3><D9B6><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="unityAction">Ҫִ<D2AA>еĺ<D0B5><C4BA><EFBFBD></param>
|
|||
|
|
public void DelayDoFrame(MonoBehaviour mono,float delay,UnityAction unityAction)
|
|||
|
|
{
|
|||
|
|
mono.StartCoroutine(E_DelayDoFrame(delay, unityAction));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ӳٶ<D3B3><D9B6><EFBFBD>֡<EFBFBD><D6A1>Э<EFBFBD><D0AD>
|
|||
|
|
/// </summary>
|
|||
|
|
private IEnumerator E_DelayDoFrame(float delay, UnityAction unityAction)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < delay; i++)
|
|||
|
|
{
|
|||
|
|
yield return null;
|
|||
|
|
}
|
|||
|
|
unityAction?.Invoke();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void Clear()
|
|||
|
|
{
|
|||
|
|
coroutines.Clear();
|
|||
|
|
}
|
|||
|
|
}
|