Coroutine内で処理を中止する方法(Unity)

UnityのCoroutineは次のような感じで使います。

void Start()
{
  StartCoroutine(Example());
}

IEnumerator Example()
{
  // 処理したい内容1

  yield return null;

  // 処理したい内容2

  yield return null;

  // 処理したい内容3
}

何かエラーがあった場合などCoroutineを抜けたい場合はyield breakを使って次のような感じで実装できるみたいです。

IEnumerator Example()
{
  // 処理したい内容1
  if (error) yield break;

  yield return null;

  // 処理したい内容2
  if (error) yield break;

  yield return null;

  // 処理したい内容3
}

Coroutine内では普通のreturnでは終了できないので、代わりにyield breakを使うみたいです。

リンク

Exiting a coroutine – Unity Forum
https://forum.unity.com/threads/exiting-a-coroutine.113897/

関連記事

Unity Editorからのデバッグ時のみ実行するifdef
UNITY_EDITORを使うと、Unity Editorでのデバッグ時のみ実行するコードを書けるようです。 使い方は次のような感じです。 #if UNITY_EDITOR Debug.log("debug"); #endif 他、UNITY_ANDROIDやUNITY_IPHONE等も便利そうです。 リンク Unity - Platform Dependent C...

Unity License Error
タイミング的にWindowsのアップデートが関係していると思いますが、Unityを起動しようとすると「Unity License Error」と表示され、起動できなくなってしまいました。 Webでいろいろ調べてみたところ、とりあえず次のような感じで再アクティベーションできるみたいです。 Unityを終了して、C:\ProgramData\Unityのフォルダーを削除もしくはリ...

Time.timeScaleに依らないWaitForSeconds
UnityでTime.timeScaleに依らないWaitForSecondsを使いたい場合は、WaitForSecondsRealtimeというのが使えるそうです。 使い方はWaitForSecondsと同じ。 IEnumerator Example() { Debug.Log("start"); yield return new WaitForSecondsRealtim...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です