「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【UnityC#】〇秒後に〇を実行する方法

Unityでゲーム開発をしている時に〇秒後に〇を実行したくなることがあると思います。今回はその方法を2種類まとめてみました。

[ Invokeを使う方法 ]

下記はInvokeを使って3秒後にコンソールに「3秒後に呼び出されるよ!」と出力するスクリプトです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    void Start()
    {
        //FunctionTestを3秒後に呼び出します。
        Invoke("FunctionTest", 3f);
    }

    void FunctionTest()
    {
        Debug.Log("3秒後に呼び出されるよ!");
    }
}

[ Coroutineを使う方法 ]

下記はCoroutineを使って3秒後にコンソールに「3秒後に呼び出されるよ!」と出力するスクリプトです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    void Start()
    {
        //FunctionTestを呼び出します。
        StartCoroutine("FunctionTest");
    }

    IEnumerator FunctionTest()
    {
        //3秒停止。
        yield return new WaitForSeconds(3f);

        Debug.Log("3秒後に呼び出されるよ!");
    }
}

[ まとめ ]

InvokeとCoroutineとだと個人的にInvokeの方が扱いやすい気がします。関数をまたいで〇秒遅れた処理をしたい時はInvokeで、同じ関数内で〇秒遅れた処理したい時はCoroutine使うイメージかな。