以下では、いくつかの具体的な使用例とコード例を示します。
-
コルーチン内での時間差実行:
IEnumerator DelayedExecution() { Debug.Log("処理を開始しました"); yield return new WaitForSeconds(2f); // 2秒待機 Debug.Log("2秒経過しました"); yield return new WaitForSeconds(3f); // 更に3秒待機 Debug.Log("合計5秒経過しました"); }
-
ゲームオブジェクトのアニメーション制御:
IEnumerator AnimateObject() { while (true) { transform.position += Vector3.up; // 上方向に移動 yield return new WaitForSeconds(1f); // 1秒待機 transform.position += Vector3.down; // 下方向に移動 yield return new WaitForSeconds(1f); // 1秒待機 } }
-
非同期のロード処理:
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は非常に便利な機能であり、さまざまなシナリオで活用することができます。