Unity C# / コルーチンの実行が終わるまで待機させたい

実現したいこと

コルーチン①を起動させた後、①の実行が終了されるまで待ち、そのあとにコルーチン②を実行する

発生している問題・分からないこと

RPG風の会話ウィンドウのようなものを再現するプログラムを書いていて、単体では問題なく動作するのですが、連続して会話させる場合にはどのように記述すればよいのかがわかりません。
一つ目のStartCoroutineの直下に書いてもバグってしまいます。呼び出したコルーチンの実行が終わるまで、StartCoroutine以降のプログラムを実行せず、終わってから下のプログラムを実行する、といった書き方はありますか?

該当のソースコード

C#

1//isAbleToTalk ~ 別オブジェクトで対象に触れているとき、trueになる2//isTalking ~ コルーチンが実行中であるときに、二重で起動されないようにその間はtrueになる3 4 void Update()5 {6 if(!isTalking && plaCon.isAbleToTalk && Input.GetKeyDown(KeyCode.Space))7 {8 StartCoroutine(MessageWindow("テスト", "start", 1));9 }10 }11 12 public IEnumerator MessageWindow(string msg, string conv, float slowness)13 {14 if (conv == "start")15 {16 audioSource.PlayOneShot(start);17 isTalking = true;18 window.SetActive(true);19 }20 21 count = 0;22 showingMessage.text = null;23 24 while(count <= (msg.Length - 1))25 {26 audioSource.PlayOneShot(showing);27 showingMessage.text = msg.Substring(0, count + 1);28 count++;29 yield return new WaitForSeconds(0.05f * slowness);30 }31 32 yield return new WaitForSeconds(0.25f);33 34 showingMessage.text += "▼";35 36 yield return new WaitUntil(() => Input.GetKeyDown(KeyCode.Space) == true);37 38 audioSource.PlayOneShot(next);39 40 if (conv == "end")41 {42 window.SetActive(false);43 isTalking = false;44 }45 46 yield break;47 }

試したこと・調べたこと

上記の詳細・結果

teratailで検索してみましたが、私と同様の悩みを抱えている方はいませんでした。

補足

特になし

コメントを投稿

0 コメント