Unityでの時間の経過を制御する方法 - yieldとWaitForSecondsの使用方法


を使用して指定した秒数待つことができます。

以下に、シンプルで簡単な方法といくつかのコード例を示します。

まず、以下のような関数を作成してコルーチンを実装します。

using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(ExampleCoroutine());
    }
    IEnumerator ExampleCoroutine()
    {
        Debug.Log("Coroutine started");
        yield return new WaitForSeconds(2.5f);
        Debug.Log("Coroutine resumed after 2.5 seconds");
    }
}

上記のコードでは、Start()関数内でStartCoroutine()を呼び出してExampleCoroutine()を実行しています。ExampleCoroutine()はコルーチンであり、yield return new WaitForSeconds(2.5f);によって2.5秒待機します。その後、処理が再開され、デバッグログが表示されます。

また、他のコード例として、タイマー機能を実装する方法もあります。以下はその例です。

using UnityEngine;
using System.Collections;
public class TimerScript : MonoBehaviour
{
    public float timeLimit = 10.0f;
    void Start()
    {
        StartCoroutine(TimerCoroutine());
    }
    IEnumerator TimerCoroutine()
    {
        float elapsedTime = 0.0f;
        while (elapsedTime < timeLimit)
        {
            yield return null; // 1フレーム待機
            elapsedTime += Time.deltaTime;
        }
        Debug.Log("Time's up!");
    }
}

上記のコードでは、timeLimit変数で制限時間を指定し、TimerCoroutine()内でその時間の経過を監視しています。yield return null;を使用して1フレーム待機し、elapsedTimeを更新します。指定された制限時間に達したら、処理が再開され、デバッグログが表示されます。

これらはUnityで時間の経過を制御するためのシンプルで簡単な方法といくつかのコード例です。コルーチンとyield return new WaitForSeconds()を組み合わせることで、待機やタイミングの制御を効果的に行うことができます。