using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ParallelCoroutine : MonoBehaviour
{
public Coroutine CurrentParallelCoroutine{ get; private set;}
public void StartParallelCoroutine(IEnumerator[] coroutines, System.Action onComplete)
{
CurrentParallelCoroutine = StartCoroutine(_StartParallelCoroutine(coroutines, onComplete));
}
IEnumerator _StartParallelCoroutine(IEnumerator[] coroutines, System.Action onComplete)
{
var parallel = new List<Coroutine>();
foreach(var c in coroutines)
parallel.Add(StartCoroutine(c));
// 全てのコルーチンが終了するのを待機
foreach(var c in parallel)
yield return c;
CurrentParallelCoroutine = null;
if (onComplete != null)
onComplete();
}
}