Version: 5.4 (switch to 5.5b)
言語English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

MenuItem

class in UnityEditor

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

マニュアルに切り替える

Description

MenuItem 属性によりメインメニューとインスペクターのコンテキストメニューにメニューアイテムを追加できます。

MenuItem 属性を使うと、どんな静的関数でもメニューコマンドにできます。静的関数のみ MenuItem 属性を使用できます。

ホットキーを作成するには次の特殊記号が使用できます: % (Windows 上で Ctrl キー、OS X 上で Cmd キー)、# (Shift キー)、& (Alt キー)。特殊な修飾キーの組み合わせが必要ない場合は、キーの前に下線 (_) を付けて表示します。例えばホットキー Shift + Alt + G のメニューを作成するには "MyMenu/Do Something #&g" を使用します。G キーのみ(修飾キーなし)でホットキーを作成するには "MyMenu/Do Something _g" を使用します。

いくつかの特殊記号はホットキーとしてサポートされていて、例えば "#LEFT" は Shift + 左矢印キーにマッピングされます。このようにサポートされているキーは上下左右の矢印キー、F1 ~ F12 キー、Home キー、End キー、Page Up キー、Page Down キーです。( LEFT, RIGHT, UP, DOWN, F1 .. F12, HOME, END, PGUP, PGDN )

ホットキーの文字列の前にスペース文字を含める必要があります( "MyMenu/Do _g" はホットキーとして認識されず、一方で "MyMenu/Do _g" は認識されます)

カスタムのゲームオブジェクト用のメニューアイテムを "GameObject/" メニューに加える場合は、 必ず GameObjectUtility.SetParentAndAlign を呼び出し、 右クリックの場合 (以下の例を参照) に新しいゲームオブジェクトが正しく表示されていることを確認します。 関数は Undo.RegisterCreatedObjectUndo も呼び出して、作成したものをアンドゥ (元に戻す) できるようにし、Selection.activeObject を新しく作成したオブジェクトに設定します。 また、"GameObject/" 以下のメニューアイテムを 階層状の Create ドロップダウンと階層状コンテクストメニューにうまく追加するには、 他の GameObject の Create メニューアイテムと一緒にグループ化する必要があります。これを行うためには、 priority (優先度) を 10 にする必要があります (下の例を参照)。古い設定の、明示的に priority が設定されていない "GameObject/Create Other" の MenuItems には、 priority にデフォルトの 1000 の代わりに 10 が設定されます。 この場合、"Create Other" よりもっと説明的なカテゴリー名を使用することと、 明示的に priority を 10 と設定することが推奨されます。

// Add a menu item named "Do Something" to MyMenu in the menu bar.
@MenuItem ("MyMenu/Do Something")
static function DoSomething () {
    Debug.Log ("Doing Something...");
}

// Validated menu item. // Add a menu item named "Log Selected Transform Name" to MyMenu in the menu bar. // We use a second function to validate the menu item // so it will only be enabled if we have a transform selected. @MenuItem ("MyMenu/Log Selected Transform Name") static function LogSelectedTransformName () { Debug.Log ("Selected Transform is on " + Selection.activeTransform.gameObject.name + "."); }

// Validate the menu item defined by the function above. // The menu item will be disabled if this function returns false. @MenuItem ("MyMenu/Log Selected Transform Name", true) static function ValidateLogSelectedTransformName () { // Return false if no transform is selected. return Selection.activeTransform != null; }

// Add a menu item named "Do Something with a Shortcut Key" to MyMenu in the menu bar // and give it a shortcut (ctrl-g on Windows, cmd-g on OS X). @MenuItem ("MyMenu/Do Something with a Shortcut Key %g") static function DoSomethingWithAShortcutKey () { Debug.Log ("Doing something with a Shortcut Key..."); }

// Add a menu item called "Double Mass" to a Rigidbody's context menu. @MenuItem ("CONTEXT/Rigidbody/Double Mass") static function DoubleMassFromContext (command : MenuCommand) { var body : Rigidbody = command.context; body.mass = body.mass * 2; Debug.Log ("Doubled Rigidbody's Mass to " + body.mass + " from Context Menu."); }

// Add a menu item to create custom GameObjects. // Priority 1 ensures it is grouped with the other menu items of the same kind // and propagated to the hierarchy dropdown and hierarch context menus. @MenuItem ("GameObject/MyCategory/Custom Game Object", false, 10) static function CreateCustomGameObject(menuCommand : MenuCommand) { var go : GameObject = new GameObject("Custom Game Object"); // Ensure it gets reparented if this was a context click (otherwise does nothing) GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject); // Register the creation in the undo system Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); Selection.activeObject = go; }
using UnityEditor;
using UnityEngine;
public class MenuTest : MonoBehaviour {

// Add a menu item named "Do Something" to MyMenu in the menu bar. [MenuItem ("MyMenu/Do Something")] static void DoSomething () { Debug.Log ("Doing Something..."); }

// Validated menu item. // Add a menu item named "Log Selected Transform Name" to MyMenu in the menu bar. // We use a second function to validate the menu item // so it will only be enabled if we have a transform selected. [MenuItem ("MyMenu/Log Selected Transform Name")] static void LogSelectedTransformName () { Debug.Log ("Selected Transform is on " + Selection.activeTransform.gameObject.name + "."); }

// Validate the menu item defined by the function above. // The menu item will be disabled if this function returns false. [MenuItem ("MyMenu/Log Selected Transform Name", true)] static bool ValidateLogSelectedTransformName () { // Return false if no transform is selected. return Selection.activeTransform != null; }

// Add a menu item named "Do Something with a Shortcut Key" to MyMenu in the menu bar // and give it a shortcut (ctrl-g on Windows, cmd-g on macOS). [MenuItem ("MyMenu/Do Something with a Shortcut Key %g")] static void DoSomethingWithAShortcutKey () { Debug.Log ("Doing something with a Shortcut Key..."); }

// Add a menu item called "Double Mass" to a Rigidbody's context menu. [MenuItem ("CONTEXT/Rigidbody/Double Mass")] static void DoubleMass (MenuCommand command) { Rigidbody body = (Rigidbody)command.context; body.mass = body.mass * 2; Debug.Log ("Doubled Rigidbody's Mass to " + body.mass + " from Context Menu."); }

// Add a menu item to create custom GameObjects. // Priority 1 ensures it is grouped with the other menu items of the same kind // and propagated to the hierarchy dropdown and hierarch context menus. [MenuItem("GameObject/MyCategory/Custom Game Object", false, 10)] static void CreateCustomGameObject(MenuCommand menuCommand) { // Create a custom game object GameObject go = new GameObject("Custom Game Object"); // Ensure it gets reparented if this was a context click (otherwise does nothing) GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject); // Register the creation in the undo system Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); Selection.activeObject = go; } }

Constructors

MenuItemメニューアイテムを作成し、メニューアイテムが選択されたときに指定された static 関数を実行します