本日は Unity の小ネタ枠です。
ContextMenuまたはContextMenuItemを使ってUnityエディターの Inspector 上で関数呼び出しを行う方法を記事にします。
ContextMenuとContextMenuItemAttribute
ContextMenu はコンテキストメニューにコマンドを追加することができます。
ContextMenuItemAttribute はフィールドからメソッドを呼び出すメニューを追加します。
docs.unity3d.com
docs.unity3d.com
サンプルスクリプト
以下の ContextMenu と ContextMenuItemAttribute のそれぞれの属性を設定した関数を持つスクリプトを作成しました。
・ContextMenuTest.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ContextMenuTest : MonoBehaviour { // ContextMenuItem はフィールドに設定する // 第一引数にコマンド名、第二引数に関数名を指定する [ContextMenuItem("Reset", "ResetMessage")] public string Message = "TestMessage"; void ResetMessage() { Message = ""; Debug.Log("Message Reset : " + Message.ToString()); } // ContextMenu は関数に設定する // コンテキストメニューから関数を実行できる [ContextMenu("ExecuteTestMethod")] void TestMethod() { Debug.Log("TestMethod !"); } }
適当なゲームオブジェクトにスクリプトを設定します。
動作確認
最初に ContextMenu の動作を確認します。
ContextMenu を設定した関数はコンポーネント右上のコンテクストメニューを開くと実行できます。
次に ContextMenuItemAttribute の動作を確認します。
ContextMenuItemAttribute を設定したフィールドを右クリックすると、コマンドが表示されて実行できます。
プロパティの変化はシーンを再生して確認する必要があります。