
###前提・実現したいこと
メインコルーチンの中で、複数のサブコルーチンを同時にスタートさせて動かせて、
全てのサブコルーチンが終わるまで待って、
その後、再びメインコルーチンの続きを走らせるという処理をしたいと思っています。
なお、個々のサブコルーチンが完了するタイミングはランダムなものとします。
###試したことと、発生している問題・エラーメッセージ
複数のサブコルーチンを同時にスタートさせて動かすつもりが、
1個目のサブコルーチンがスタートして、そのサブコルーチンが完了した後に、
2個目のサブコルーチンがスタートして、そのサブコルーチンが完了した後に、
3個目のサブコルーチンがスタートして、そのサブコルーチンが完了した後に、
メインコルーチンの続きが動く、という処理になっていました。
どうすれば、複数のサブコルーチンが同時に動いて、
なおかつ、複数のサブコルーチンの全てが完了するタイミングを拾うことができますか?
ご教授のほどよろしくお願いします。
###該当のソースコード
C#
1public class Sample : MonoBehaviour { 2 3 void Start(){ 4 StartCoroutine (MainCoroutine()); 5 } 6 7 IEnumerator MainCoroutine(){ 8 Debug.Log ("メインコルーチン処理1"); 9 yield return new WaitForSeconds(0.5f); 10 Debug.Log ("メインコルーチン処理2"); 11 yield return new WaitForSeconds(0.5f); 12 13 yield return StartCoroutine (SubCoroutine("A")); 14 yield return StartCoroutine (SubCoroutine("B")); 15 yield return StartCoroutine (SubCoroutine("C")); 16 17 Debug.Log ("メインコルーチン処理3"); 18 yield return new WaitForSeconds(0.5f); 19 Debug.Log ("メインコルーチン処理4"); 20 yield return new WaitForSeconds(0.5f); 21 } 22 23 IEnumerator SubCoroutine(string s){ 24 Debug.Log ("サブコルーチン処理" + s + "1"); 25 float waitSec = Random.Range(0.1f, 1.5f); 26 yield return new WaitForSeconds(waitSec); 27 Debug.Log ("サブコルーチン処理" + s + "2"); 28 } 29 30}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/04/08 16:08