UnityEventによる柔軟なイベント管理:インスペクター設定の連携

概要

Unityでは、UnityEventを通じてイベント処理を柔軟に管理できます。
各イベントハンドラー(どのメソッドが実行されるか)は、シーンファイルにシリアライズされた状態で保存されるため、スクリプト自体を変更することなくインスペクター上で設定を行うことが可能です。

サンプルコードの解説

InspectorSet.cs

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

using UnityEngine;
using UnityEngine.Events;

public class InspectorSet : MonoBehaviour
{
    public UnityEvent unityEvent;

    void Start()
    {
        unityEvent.Invoke();
    }
}
  • unityEvent はインスペクター上で設定され、どのコールバックが実行されるかはシーンファイルに記録されています。
  • Start() メソッドでイベントを呼び出し、設定された処理を実行します。

ShowSample.cs

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

using UnityEngine;

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

まとめ

Unityのインスペクターを利用したUnityEventの管理は、シーンファイルにシリアライズされた設定情報をもとに、
プログラムコードの修正なしにイベント処理を柔軟に設定できる仕組みです。
上記の例では、InspectorSet.cs がイベントを発行し、シーンファイルに記録された情報に基づいて ShowSample.csShow() メソッドが実行される流れを示しています。

Unity,イベント

Posted by hidepon