【Unity】Editor でコルーチンを実行する

DEVELOP, Unity

疑似的にコルーチンぽいことをするには EditorApplication.update にイベントを追加すると楽です。

static List<IEnumerator> _coroutine = new List<IEnumerator>();
static void StartCorountine(IEnumerator routine)
{
    _coroutine.Add(routine);
    if (_coroutine.Count == 1)
    {
        EditorApplication.update += ExecuteCoroutine;
    }
}
static void ExecuteCoroutine()
{
    for (int i = 0; i < _coroutine.Count;)
    {
        if (_coroutine[i] == null || !_coroutine[i].MoveNext())
        {
            _coroutine.RemoveAt(i);
        }
        else
        {
            i++;
        }
    }
    
    if (_coroutine.Count == 0)
    {
        EditorApplication.update -= ExecuteCoroutine;
    }
}

スポンサーリンク

Posted by kazupon