Unityでyield returnを使用する方法


以下では、いくつかの具体的な使用例とコード例を示します。

  1. コルーチン内での時間差実行:

    IEnumerator DelayedExecution()
    {
    Debug.Log("処理を開始しました");
    yield return new WaitForSeconds(2f); // 2秒待機
    Debug.Log("2秒経過しました");
    yield return new WaitForSeconds(3f); // 更に3秒待機
    Debug.Log("合計5秒経過しました");
    }
  2. ゲームオブジェクトのアニメーション制御:

    IEnumerator AnimateObject()
    {
    while (true)
    {
        transform.position += Vector3.up; // 上方向に移動
        yield return new WaitForSeconds(1f); // 1秒待機
        transform.position += Vector3.down; // 下方向に移動
        yield return new WaitForSeconds(1f); // 1秒待機
    }
    }
  3. 非同期のロード処理:

    IEnumerator LoadAssets()
    {
    Debug.Log("ロードを開始しました");
    yield return SceneManager.LoadSceneAsync("Level1"); // レベル1の非同期ロード
    Debug.Log("ロードが完了しました");
    yield return new WaitForSeconds(2f); // 2秒待機
    Debug.Log("2秒経過しました");
    }

これらの例では、yield returnを使用することで処理を一時停止し、指定した条件や時間経過後に再開することができます。これにより、フレームレートの低下を防ぎながら、時間差での処理やアニメーションの制御、非同期のロード処理などを実現することができます。

このように、Unityのyield returnは非常に便利な機能であり、さまざまなシナリオで活用することができます。