public static IEnumerator WaitForAll(this MonoBehaviour mb, IEnumerable <IEnumerator> enumerable) { WaitForAllShared shared = new WaitForAllShared(); int count = 0; foreach (IEnumerator enumerator in enumerable) { mb.StartCoroutine(IncrementDone(mb, enumerator, shared)); count++; } yield return(new WaitUntil(() => shared.done == count)); }
private static IEnumerator IncrementDone(MonoBehaviour mb, IEnumerator enumerator, WaitForAllShared shared) { yield return(mb.StartCoroutine(enumerator)); shared.done++; }