Version: 2019.3
public void AddItem (GUIContent content, bool on, GenericMenu.MenuFunction func);

パラメーター

contentメニュー項目として追加する GUIContent
onSpecifies whether to show the item is currently activated (i.e. a tick next to the item in the menu).
funcメニュー項目が選択されている場合に呼び出す関数

説明

メニューにアイテムを追加します


public void AddItem (GUIContent content, bool on, GenericMenu.MenuFunction2 func, object userData);

パラメーター

contentメニュー項目として追加する GUIContent
onSpecifies whether to show the item is currently activated (i.e. a tick next to the item in the menu).
funcメニュー項目が選択されている場合に呼び出す関数
userData項目が選択されたとき、呼び出された関数に渡すデータ

説明

メニューにアイテムを追加します

// This example shows how to create a context menu inside a custom 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(); } } } }
// This example shows how to create a context menu inside a custom 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(); } } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961