Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

MenuItem

класс в UnityEditor

Описание

Атрибут MenuItem позволяет добавлять пункты меню в главное меню и контекстные меню инспектора.

Атрибут MenuItem превращает любую статическую функцию в команду меню. Только статические функции могут использовать атрибут MenuItem.

Для создания горячей клавиши можно использовать следующие специальные символы: % (ctrl в Windows, cmd в macOS), # (shift), & (альт). Если специальные комбинации клавиш-модификаторов не требуются, ключ может быть указан после символа подчеркивания. Например, чтобы создать меню с помощью сочетания клавиш shift-alt-g, используйте "MyMenu/Do Something #&g". Чтобы создать меню с горячей клавишей g и без нажатых клавиш-модификаторов, используйте "MyMenu/Do Something _g".

Некоторые специальные клавиши клавиатуры поддерживаются в качестве горячих клавиш, например, "#LEFT" соответствует сдвигу влево. Поддерживаются следующие клавиши: ВЛЕВО, ВПРАВО, ВВЕРХ, ВНИЗ, F1 .. F12, HOME, END, PGUP, PGDN.

Тексту горячей клавиши должен предшествовать символ пробела ("MyMenu/Do_g" не будет интерпретироваться как горячая клавиша, а "MyMenu /Do _g" будет).

При добавлении пунктов меню в меню "GameObject/" для создания пользовательских игровых объектов обязательно вызовите GameObjectUtility.SetParentAndAlign, чтобы убедиться, что новый GameObject правильно изменен в случай контекстного клика (см. пример ниже). Ваша функция также должна вызывать Undo.RegisterCreatedObjectUndo, чтобы отменить создание, и установить Selection.activeObject для вновь созданного объекта. объект. Также обратите внимание, что для того, чтобы элемент меню в «GameObject/» распространялся на иерархию, он должен быть сгруппирован. с другими пунктами меню создания GameObject. Этого можно добиться, установив его приоритет равным 10 (см. пример ниже). Обратите внимание, что для устаревших целей MenuItems в «GameObject/Create Other» без явного набора приоритета получит приоритет 10 вместо 1000 по умолчанию — мы рекомендуем использовать более описательное имя категории, чем «Create Other» и явным образом установка приоритета на 10.

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 hierarchy 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; } }

Конструкторы

MenuItem Создает пункт меню и вызывает следующую за ним статическую функцию при выборе пункта меню.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3