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/

関連記事

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

コメントを残す

メールアドレスが公開されることはありません。