前提・実現したいこと
Unityで2Dゲームを作成しています。
発生している問題・エラーメッセージ
Startメソッド内でコルーチンでカウントダウンさせるメソッドを呼んでいるのですが、
最初に読み込まれたときは最後まで実行されるのですが、再び読み込まれたときに、最後まで
処理が実行されません。
該当のソースコード
C#
1 private void Start() 2 { 3 StartCoroutine(CountDown()); 4 } 5 6 /// <summary> 7 /// 開始時のカウントダウン 8 /// </summary> 9 /// <returns></returns> 10 private IEnumerator CountDown() 11 { 12 countDownText.text = "3"; 13 14 yield return new WaitForSeconds(1.0f); 15 16 countDownText.text = "2"; 17 18 yield return new WaitForSeconds(1.0f); 19 20 countDownText.text = "1"; 21 22 yield return new WaitForSeconds(1.0f); 23 24 countDownText.gameObject.SetActive(false); 25 26 GameManager.IsActive = true; 27 pouseBotton.gameObject.SetActive(true); 28 }
試したこと
Visual Studioでブレイクポイントをセットしてどこまで進んでいるのか確認すると
初回は最後まで処理が実行されていることが分かりました。
2回目以降は" countDownText.text = "3"; "の後のreturnまでは進んでいるのですが、
その後に戻ってきません。
補足情報(FW/ツールのバージョンなど)
Unity2019.4.15f1(LTS)
2回目以降はどのように呼び出しておりますか?
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
でこのシーン自体を呼んで実行しようとしています。
>" countDownText.text = "3"; "の後のreturnまでは進んでいるのですが、…
このテキストの文字列は最初から3になってたりしてませんか?だとしたらコルーチン自体が呼ばれてないことも考えられるので細かくデバッグログしてみてください
テキストの初期値は3にしていました。そのため、違う値にして行いましたが2回目は3が表示されていいました。
試したことにもか書きましたが、2回目は”3”の後のreturnまで来ていることはブレイクポイントをセットして確認していますのでコルーチン自体が呼ばれていないのは無いのではないでしょうか?
各数字の後に Debug.Log("数字") を記述し確認してみましたが、2回目は3だけが出力されています。
回答1件
あなたの回答
tips
プレビュー