UnityEditorのオブジェクト管理(UnityEvent編)
Unityイベントのインスペクター管理もそれ以外の管理方法と基本的に違いがありません。
どのイベントハンドラー(メソッド)が呼び出されるかは、シーンファイルに記述されているため、スクリプトを変更することなく、イベント処理を実現することができます。
これから、読んでみましょう
目次
サンプルプロジェクト
エディター画面
デバッグ表示
実行結果
SampleScene.unityファイル(イベント部分の抽出)
どのオブジェクトのどのメソッドが実行されるのかが、シリアル化された状態で記述されています。
--- !u!114 &912011094
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 912011092}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9c812735c477845d782e68c76e4c6289, type: 3}
m_Name:
m_EditorClassIdentifier:
unityEvent:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 912011095}
m_TargetAssemblyTypeName: ShowSample, Assembly-CSharp
m_MethodName: Show
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &912011095
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 912011092}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 36a5264d023284922835fe9c6007ab7c, type: 3}
m_Name:
m_EditorClassIdentifier:
スクリプト(InspectorSet.cs)
using UnityEngine;
using UnityEngine.Events;
public class InspectorSet : MonoBehaviour
{
public UnityEvent unityEvent;
void Start()
{
unityEvent.Invoke();
}
}
スクリプト(ShowSample.cs)
using UnityEngine;
public class ShowSample : MonoBehaviour
{
public void Show()
{
Debug.Log("コールバック");
}
}
ディスカッション
コメント一覧
まだ、コメントがありません