本日は Unity の小ネタ枠です。
Unityで自作のメニュー項目を追加する方法です。
MenuItem
Unityで自作のメニュー項目を追加するにはMenuItemを属性として指定します。
MenuItemは静的関数(static)のみが利用可能です。
docs.unity3d.com
[MenuItem("MenuItemTest/ShowLog")]
また、引数にショートカットキーを指定することができます。
スペース文字を挟んで以下のように文字を組み合わせて指定します。
// Shift + L キーのショートカットキーを指定 [MenuItem("MenuItemTest/ShowLog #l")]
ショートカットキーの指定には以下の特殊文字が利用できます。
特殊文字 | 対応キー |
---|---|
% | Ctrlキー |
# | Shiftキー |
& | Altキー |
単体のキーをショートカットキーに指定したい場合は以下のように _ を付与します。
// G キーのショートカットキーを指定 [MenuItem("MenuItemTest/ShowLog _g")]
既存のショートカットキーと指定が重複した場合は既存のものが優先されるようです。
サンプルスクリプト
以下の[MenuItemTest -> ShowLog]のメニューを実行するとログ出力を行うサンプルスクリプトを作成しました。
・MenuItemTest.cs
using UnityEditor; using UnityEngine; public class MenuItemTest { /// <summary> /// メニューから MenuItemTest -> ShowLog を選択して処理を実行する /// </summary> [MenuItem("MenuItemTest/ShowLog #l")] private static void ShowLogTest() { Debug.Log("ログ表示"); } }
MenuItemはUnityエディター上でのみ動作するため、ビルド時に以下のエラーが発生します。
error CS0246: The type or namespace name 'MenuItemAttribute' could not be found (are you missing a using directive or an assembly reference?)
本スクリプトをEditorフォルダに配置することでエディター用のスクリプトとして扱われ、ビルド時には参照しないようにできます。
メニューに[MenuItemTest -> ShowLog]が追加され、これを実行するとログが表示できました。