Параметры
content | GUIContent для добавления в качестве пункта меню. |
on | Указывает, показывать ли элемент в данный момент активированным (т. е. галочка рядом с элементом в меню). |
func | Функция, вызываемая при выборе пункта меню. |
Описание
Добавить элемент в меню.
Смотрите так же: GenericMenu.AddDisabledItem, GenericMenu.AddSeparator.
Объявление
public void AddItem(GUIContent content, bool on, GenericMenu.MenuFunction2 func, object userData);Параметры
content | GUIContent для добавления в качестве пункта меню. |
on | Указывает, показывать ли элемент в данный момент активированным (т. е. галочка рядом с элементом в меню). |
func | Функция, вызываемая при выборе пункта меню. |
userData | Данные для передачи в функцию, вызываемую при выборе элемента. |
Описание
Добавить элемент в меню.
Смотрите так же: GenericMenu.AddDisabledItem, GenericMenu.AddSeparator.
// В этом примере показано, как создать контекстное меню внутри пользовательского окна EditorWindow.
using UnityEngine;
using UnityEditor;
public class MyWindow : EditorWindow
{
[MenuItem("TestContextMenu/Open Window")]
public static void Init()
{
var window = GetWindow(typeof(MyWindow));
window.position = new Rect(50, 50, 250, 60);
window.Show();
}
public void Callback(object obj)
{
Debug.Log("Selected: " + obj);
}
public void OnGUI()
{
Event evt = Event.current;
Rect contextRect = new Rect(10, 10, 100, 100);
if (evt.type == EventType.ContextClick)
{
Vector2 mousePos = evt.mousePosition;
if (contextRect.Contains(mousePos))
{
// Now create the menu, add items and show it
GenericMenu menu = new GenericMenu();
menu.AddItem(new GUIContent("MenuItem1"), false, Callback, "item 1");
menu.AddItem(new GUIContent("MenuItem2"), false, Callback, "item 2");
menu.AddSeparator("");
menu.AddItem(new GUIContent("SubMenu/MenuItem3"), false, Callback, "item 3");
menu.AddItem(new GUIContent("SubMenu/MenuItem4"), false, Callback, "item 4");
menu.AddItem(new GUIContent("SubMenu/MenuItem5"), false, Callback, "item 5");
menu.AddSeparator("SubMenu/");
menu.AddItem(new GUIContent("SubMenu/MenuItem6"), false, Callback, "item 6");
menu.ShowAsContext();
evt.Use();
}
}
}
}
// В этом примере показано, как создать контекстное меню внутри пользовательского окна EditorWindow.
using UnityEngine;
using UnityEditor;
public class MyWindow : EditorWindow
{
[MenuItem("TestContextMenu/Open Window")]
public static void Init()
{
var window = GetWindow(typeof(MyWindow));
window.position = new Rect(50, 50, 250, 60);
window.Show();
}
bool item2enabled = false;
public void Toggle()
{
item2enabled = !item2enabled;
Debug.Log("item2enabled: " + item2enabled);
}
public void Item2Callback()
{
Debug.Log("Item 2 Selected");
}
public void OnGUI()
{
Event evt = Event.current;
Rect contextRect = new Rect(10, 10, 100, 100);
if (evt.type == EventType.ContextClick)
{
Vector2 mousePos = evt.mousePosition;
if (contextRect.Contains(mousePos))
{
// Now create the menu, add items and show it
GenericMenu menu = new GenericMenu();
menu.AddItem(new GUIContent("Toggle item 2"), item2enabled, Toggle);
if (item2enabled)
{
menu.AddItem(new GUIContent("Item 2"), false, Item2Callback);
}
else
{
menu.AddDisabledItem(new GUIContent("Item 2"));
}
menu.ShowAsContext();
evt.Use();
}
}
}
}