はじめに
ゲームを開発していると、EditorWindow
を継承して、そのゲーム専用のエディタウィンドウを作成することがよくあるかと思います。
開発が進むと、いろんな人がエディタウィンドウを新しく定義して、エディタウィンドウが増えていくこともあるかと思います。
そんな時、ふと「このEditorWindow
の実装どうなってるんだろう」と思うことがあると思います。
が、EditorWindow
を定義しているスクリプトファイルがどれになるのか、スムーズに探せないことがあります。
EditorWindow
のタイトルが別に定義されていたりするとさらにわからなくなります。GUIの表示から処理を推測してスクリプトファイルを探す..なんてことを僕はしょっちゅうやっています。
解決策
あまり効率的ではないので、これを解決する方法を紹介します。
動画のようにメニューからスクリプトの場所を探すことができるようになります。
EditorWindowにIHasCustomMenuを実装する
IHasCustomMenu
を実装すると、EditorWindow右上のボタンで出る一覧に自分のメニューを増やすことができます。
using UnityEngine; using UnityEditor; public class ExampleEditorWindow : EditorWindow, IHasCustomMenu { [MenuItem("Tools/EditorWIndow")] public static void Open() { EditorWindow.GetWindow<ExampleEditorWindow>("ExampleEditorWindow"); } /// <summary> /// メニューにアイテムをを追加する /// </summary> /// <param name="menu">メニュー</param> public void AddItemsToMenu(GenericMenu menu) { menu.AddItem(new GUIContent("Ping Script"), false, () => { var mono = MonoScript.FromScriptableObject(this); EditorGUIUtility.PingObject(mono); }); } }
GenericMenu.AddItem() を使うことで、簡単にメニューを追加することができます。