UnityEventを活用したインスペクター上のイベント管理チュートリアル

このチュートリアルでは、UnityEventを利用して、スクリプトの変更なしにインスペクター上でイベントの設定・発行ができる仕組みを学びます。以下の手順に沿って、UnityEventの基本的な使い方から実際の動作確認までを体験していきましょう。

前提知識


チュートリアルの概要

  • UnityEventの基本概念
    UnityEventは、シーンにシリアライズされた設定情報に基づいてイベントハンドラー(どのメソッドが実行されるか)を管理します。
  • サンプルコードの作成
    2つのスクリプト(InspectorSet.csとShowSample.cs)を作成し、イベントの発行とコールバックの動作を確認します。
  • インスペクター上での設定
    Unityエディター上で、イベントにコールバックを登録する方法を学びます。

必要な環境

  • Unity(推奨バージョン: Unity 2020以降)
  • 基本的なC#の知識

ステップ1: プロジェクトの作成

  1. Unity Hubから新しいプロジェクトを作成します。
    プロジェクト名を「UnityEventTutorial」とし、適当なテンプレート(例:3D)を選択してください。

ステップ2: スクリプトの作成

プロジェクト内に以下の2つのC#スクリプトを作成します。

InspectorSet.cs

このスクリプトは、インスペクター上で設定されたUnityEventを保持し、シーン開始時にイベントを発行します。

using UnityEngine;
using UnityEngine.Events;

public class InspectorSet : MonoBehaviour
{
    public UnityEvent unityEvent;

    void Start()
    {
        unityEvent.Invoke();
    }
}
  • unityEvent
    インスペクター上で設定され、どのコールバックが実行されるかはシーンにシリアライズされた設定情報に基づいています。
  • Start()
    シーン開始時に、unityEventを発行し、登録された処理が実行されます。

ShowSample.cs

このスクリプトは、イベントのコールバックとして実行されるメソッドを定義します。

using UnityEngine;

public class ShowSample : MonoBehaviour
{
    public void Show()
    {
        Debug.Log("コールバック");
    }
}
  • Show()
    InspectorSet.csのUnityEventが発行された際に呼び出され、コンソールに「コールバック」と表示されます。

ステップ3: ゲームオブジェクトへのスクリプト追加

  1. EventControllerの作成
    シーンに空のゲームオブジェクト(例:EventController)を作成し、InspectorSet.csをコンポーネントとして追加します。
  2. SampleReceiverの作成
    もう一つのゲームオブジェクト(例:SampleReceiver)を作成し、ShowSample.csをコンポーネントとして追加します。

ステップ4: インスペクターでのUnityEvent設定

  1. EventControllerのインスペクターを確認
    EventControllerのInspectorSetコンポーネント内にあるunityEventフィールドを探します。
  2. イベントリスナーの追加
    unityEventフィールド内の「+」ボタンをクリックして、新しいイベントリスナーを追加します。
  3. オブジェクトの割り当て
    リスト内のオブジェクトスロットにSampleReceiverをドラッグ&ドロップします。
  4. メソッドの選択
    ドロップダウンリストからShowSample -> Show()を選択します。

ステップ5: 動作確認

  1. シーンを保存し、再生ボタンを押して実行します。
  2. コンソールに「コールバック」と表示されれば、UnityEventの発行と登録されたコールバックが正しく動作していることを確認できます。

まとめ

このチュートリアルでは、UnityEventを利用したインスペクター上でのイベント管理方法を学びました。
シーンにシリアライズされた設定情報により、プログラムコードの修正なしにイベントの設定が可能となります。
実際にプロジェクトを作成して動作確認を行うことで、UnityEventの利便性と柔軟性を実感してください。

Unity,イベント

Posted by hidepon