EditorTool3D/Assets/ZXL/Scripts/ZCoroutine.cs

40 lines
842 B
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ZXL
{
public class ZCoroutine : MonoBehaviour
{
private static ZCoroutine instance;
private Queue<IEnumerator> pool = new Queue<IEnumerator>();
public static ZCoroutine Instance => instance;
private void Awake()
{
if (instance != null)
{
Destroy(this.gameObject);
}
instance = this;
}
private void Update()
{
if (pool.Count > 0)
{
var enumerator = pool.Dequeue();
StartCoroutine(enumerator);
}
}
public void AddIEnumerator(IEnumerator enumerator)
{
pool.Enqueue(enumerator);
}
}
}