MenuItem Constructor
Declaration
public MenuItem(string itemName);public MenuItem(string itemName, bool isValidateFunction);public MenuItem(string itemName, bool isValidateFunction, int priority);Параметры
| Параметр | Описание |
|---|---|
| itemName | itemName является пунктом меню, представленным как имя пути. Например, пунктом меню может быть "GameObject/Do Something". |
| isValidateFunction | Если isValidateFunction имеет значение true, то это функция проверки и она вызывается до вызывания функции меню с тем же itemName. |
| приоритетность | Порядок отображения элементов меню в меню. Если элемент меню имеет значение приоритета 10 или больше, чем предшествующий ему элемент, то линия разделения разделяет два элемента меню друг от друга в меню. |
Описание
Создаёт пункт меню и вызывает следующую за ним статическую функцию при выборе этого пункта.
MenuItem — это атрибут, который указывается перед функцией скрипта. Благодаря ему функция появляется в системе меню Unity. Расположение в меню задаётся значением itemName, переданным в соответствующем аргументе.
Параметр isValidateFunction используется для создания функции MenuItem, которая выполняется перед функцией скрипта с тем же аргументом itemName. Второй аргумент имеет тип boolean. Если ему задано значение true, связанная функция помечается для вызова перед выполнением второй функции скрипта. Затем выполняется вторая функция скрипта с тем же itemName, поэтому именно она выполняется следующей.
Предупреждение: Значение priority учитывается в исполняемой функции только тогда, когда для isValidateFunction задано false. Если для isValidateFunction задано true, чтобы пометить функцию проверки, priority не используется.
Значение priority определяет положение следующей функции скрипта в системе меню. Его целочисленное значение сравнивается со значениями других функций скрипта. Родительские меню получают значение приоритета от первого определённого подменю. Если целочисленное значение больше остальных, функция скрипта MenuItem помещается в конец списка. Значение priority также позволяет объединять функции скрипта в группы. Пример ниже на этой странице подробнее демонстрирует эту возможность.
Следующий пример кода добавляет в меню "Example" три пункта с соответствующими функциями: Example2 (priority 100), Example1 (priority 101), затем Example3 (priority 112). В меню пункт Example3 отделён разделительной линией от двух остальных, поскольку значение priority для Example3 как минимум на 10 больше, чем для Example1.
// Add menu item Example1 into a new menu called Example. [MenuItem("Example/Example1", false, 101)] public static void Example1() { Debug.Log("Example/Example1"); } // Add Example2 to the Example menu. Example2 has a priority lower than Example1, so it is added before Example1 in the menu. [MenuItem("Example/Example2", false, 100)] public static void Example2() { Debug.Log("Example/Example2"); } // Example3 has a priority of 112, which is 11 more than Example1. // This creates a divider between the two in the menu. [MenuItem("Example/Example3", false, 112)] public static void Example3() { Debug.Log("Example/Example3"); }
Следующий пример включает функции проверки. Не используйте параметр priority в атрибуте функции проверки.
// The Example/SelectionCount menu item is enabled only when you select at least one object. [MenuItem("Example/SelectionCount", true)] public static bool SelectionCountValidation() { return Selection.count > 0; } // The actual function that is called if the active menu item is selected. [MenuItem("Example/SelectionCount", false, 200)] public static void SelectionCountAction() { Debug.Log($"The selection contains {Selection.count} element(s)"); }