【Unity】Editor でコルーチンを実行する
疑似的にコルーチンぽいことをするには 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;
}
}
パッケージを導入する
About Editor Coroutines | Editor Coroutines | 1.0.0 (unity3d.com) こちらのEditor Coroutines パッケージを取り込むと実装の手間が省けます。
using Unity.EditorCoroutines.Editor;
EditorCoroutineUtility.StartCoroutineOwnerless(Coroutine());
static IEnumerator Coroutine()
{
yield break;
}