異步任務隊列,十分好用
using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; /// <summary> /// 異步任務隊列 /// </summary> public class AsyncQueueTask { public delegate Task<bool> TaskDel(object data); private bool isWait; //方法隊列 Queue<TaskDel> taskQueue = new Queue<TaskDel>(); //參數隊列 Queue<object> paraQueue = new Queue<object>(); /// <summary> /// 調用這個即可 /// </summary> /// <param name="ac">方法</param> /// <param name="data">參數</param> public void AddQueueTask(TaskDel ac, object data) { Debug.Log("入隊"); taskQueue.Enqueue(ac); paraQueue.Enqueue(data); StartTask(); } async void StartTask() { if (!isWait && taskQueue.Count != 0) { isWait = true; await taskQueue.Peek()(paraQueue.Peek()); Debug.Log("出隊"); taskQueue.Dequeue(); paraQueue.Dequeue(); isWait = false; StartTask(); } } }