Объявление
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. |
| priority | Порядок отображения пунктов меню. |
Описание
Создает пункт меню и вызывает следующую за ним статическую функцию при выборе пункта меню.
MenuItem — это атрибут, предшествующий функции скрипта. Благодаря этому функция появляется в системе меню Unity. Расположение меню определяется аргументом itemName.
isValidateFunction используется для создания функции MenuItem, которая будет выполняться перед функцией скрипта с тем же itemName. Второй аргумент является логическим. Если для этого аргумента задано значение true, связанная функция будет помечена как вызываемая перед выполнением второй функции скрипта. Эта вторая функция скрипта с тем же itemName будет выполнена следующей.
priority определяет порядок следующей функции скрипта в системе меню. Целочисленное значение сравнивается со значениями других функций скрипта. Если целочисленное значение больше других значений, функция скрипта MenuItem будет помещена в конец списка. Значение priority также можно использовать для управления списком функций скрипта по группам. Пример ниже на этой странице описывает больше об этой функции.
Следующий пример скрипта добавляет две функции в систему меню примера.
using UnityEngine;
using UnityEditor;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
// Add Example1 into a new menu list
[MenuItem("Example/Example1", false, 100)]
public static void Example1()
{
print("Example/Example1");
}
// Add Example2 into the same menu list
[MenuItem("Example/Example2", false, 100)]
public static void Example2()
{
print("Example/Example2");
}
}
В следующем простом примере показано, как в меню Пример могут быть две записи, разделенные разделительной линией. Это происходит, когда аргумент priority разделен более чем на 10. (Однако см. следующее описание.)
using UnityEngine;
using UnityEditor;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
// Add Example1 has priority of 100
[MenuItem("Example/Example1", false, 100)]
public static void Example1()
{
print("Example/Example1");
}
// Example2 has a priority of 111 which is 11 more than Example1.
// This will cause a divider to be created.
[MenuItem("Example/Example2", false, 111)]
public static void Example2()
{
print("Example/Example2");
}
}
Примечание. Считается, что число десять или больше создает разделитель в меню. Однако, как показано в приведенном выше примере, разница между функциями сценария должна иметь priority, разделенный 11 или более. Вот почему в предыдущем примере значение равно 100, а в одном — 111. При изменении 111 на 110 разделитель не возникает.

