※ローカルメソッドを利用しているため .Net 4.x にしてないと動作しません
IEnumerator の MoveNext が false になるまでループすれば
StartCoroutine の代わりができるので EditorApplication.update
を
利用して Editor 用の StartCoroutine を作成
public static class EditorIEnumerator { public static void StartCoroutine(IEnumerator update) { void Callback() { if (update.MoveNext()) return; EditorApplication.update -= Callback; } EditorApplication.update += Callback; } }
下記のようにすればちゃんと実行される
// 呼び出し EditorIEnumerator.StartCoroutine(Test()); // テスト用メソッド private IEnumerator Test() { Debug.Log("Begin"); yield return null; Debug.Log("End"); }