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.cs の Show() メソッドが実行される流れを示しています。
ディスカッション
コメント一覧
まだ、コメントがありません