ニュース

Top  >   24. Audio  >   Q, コルーチン内でyield return new WaitForSeconds()が効かず、すぐに処理が完了する

Q, コルーチン内でyield return new WaitForSeconds()が効かず、すぐに処理が完了する

2026/03/19

メインコンテンツへスキップ
< すべてのカテゴリに戻る

A,結論

コルーチンをStartCoroutineで開始し、待つ側でもyield returnしているか確認します。

原因 / 背景

IEnumeratorメソッドを直接呼ぶだけでは通常その本体は実行されません。StartCoroutineは呼び出し元の後続処理を自動では待たせません。

実装 / 手順

  1. IEnumerator内で yield return new WaitForSeconds(1f); のように待機時間を指定します。
  2. 別のコルーチンの完了も待つなら yield return StartCoroutine(OtherRoutine()); または yield return OtherRoutine(); とします。
  3. Time.timeScaleの影響を受けない待機にはWaitForSecondsRealtimeを使います。

サンプルコード

using System.Collections;
using UnityEngine;

public class WaitForSecondsExample : MonoBehaviour
{
    [SerializeField] private float delaySeconds = 2f;

    private void Start()
    {
        StartCoroutine(ExecuteLater());
    }

    private IEnumerator ExecuteLater()
    {
        yield return new WaitForSeconds(delaySeconds);
        Debug.Log("指定秒数の待機後に処理を実行しました。");
    }
}

※ 実機確認が必要な項目は、Editor だけで判断せず、対象デバイスでも必ず動作確認してください。

難易度:Level 2(初心者)
対象プラットフォーム:PC,Visual Studio,Unity
関連キーワード:C#,aca

Level 1-2 向けバナーLevel 3-5 向けバナー 1Level 3-5 向けバナー 2