【Unity】時間経過後のメソッド実行

Unityを使用したゲーム開発において、一定時間経過後に特定のメソッドを実行する必要がある場合があります。例えば、30秒経過後にイベントを発生させたり、特定のアクションを実行したいときなどに便利です。本資料では、Coroutineを使用して30秒後に特定のメソッドを実行する方法を説明します。

前提条件

  • Unityの基本的な操作方法を理解していること。
  • スクリプトを作成・編集できること。
  • Unityプロジェクトがセットアップされていること。

実装手順

1. スクリプトの作成

まず、UnityのMonoBehaviourを継承したスクリプトを作成し、30秒後に特定のメソッドが実行される処理を実装します。

スクリプト例:

using System.Collections;
using UnityEngine;

public class TimerExample : MonoBehaviour
{
    // ゲーム開始時にコルーチンを開始
    void Start()
    {
        // 30秒後にメソッドを実行するコルーチンを開始
        StartCoroutine(ExecuteAfterTime(30f));
    }

    // 30秒後に実行されるメソッド
    IEnumerator ExecuteAfterTime(float time)
    {
        // 指定時間(30秒)待機
        yield return new WaitForSeconds(time);
        // メソッドを実行
        MyMethod();
    }

    // 実行したいメソッド
    void MyMethod()
    {
        Debug.Log("30秒経過後にこのメソッドが実行されました。");
    }
}

2. 実行手順

  1. Unityエディタでスクリプトを追加: 作成したスクリプトをUnityエディタのGameObjectにアタッチします。
  • 任意のGameObjectを選択し、Inspectorウィンドウで「Add Component」ボタンをクリック。
  • 作成したスクリプト(例: TimerExample)を追加します。
  1. ゲームを実行: Unityエディタの再生ボタンをクリックして、ゲームを実行します。ゲームが開始してから30秒後に、MyMethod()が実行され、Consoleウィンドウにメッセージが表示されます。

仕組みの解説

  1. StartCoroutineメソッド: Coroutine(コルーチン)を開始するためのメソッドです。ここでは、30秒後にメソッドを実行するためにExecuteAfterTimeコルーチンを開始しています。
  2. WaitForSecondsメソッド: 指定された秒数が経過するまで処理を一時停止します。この例では30f(30秒)を渡して、30秒待機させています。
  3. メソッド実行: 30秒経過後にMyMethod()が呼び出され、指定した処理が実行されます。今回はDebug.Log()でメッセージを表示していますが、他の処理をここに記述することもできます。

応用例

  • 一定時間後に敵キャラクターを出現させる。
  • タイマーを使用して、ゲームイベントを管理する。
  • ゲーム開始から一定時間後にプレイヤーのステータスを変更する。

注意点

  • Coroutineは、MonoBehaviourを継承したクラスでのみ使用できます。
  • WaitForSecondsはリアルタイムを基準にしているため、ゲームの時間スケール(Time.timeScale)が変更されると動作が異なる場合があります。

この資料は、Unityでの基本的なタイマー機能の実装を通じて、時間経過後にメソッドを実行する方法を説明しました。コルーチンを活用することで、簡単に時間を操作しながら処理を制御することができます。

Unity

Posted by hidepon