Объявление
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 разделитель не возникает.