版本:Unity 6 (6000.0)
语言英语
  • C#

GenericMenu

UnityEditor 中的类

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交内容,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

GenericMenu 允许您创建自定义上下文菜单和下拉菜单。

以下示例打开一个带有按钮的编辑器窗口。单击按钮将显示一个上下文菜单,您可以使用它更改要应用于窗口中 GUI 的颜色。将示例的内容复制到名为 GenericMenuExample.cs 的脚本中,并将该脚本放入项目中名为 Editor 的文件夹中。

.

using UnityEngine;
using UnityEditor;

public class GenericMenuExample : EditorWindow { // open the window from the menu item Example -> GUI Color [MenuItem("Example/GUI Color")] static void Init() { EditorWindow window = GetWindow<GenericMenuExample>(); window.position = new Rect(50f, 50f, 200f, 24f); window.Show(); }

// serialize field on window so its value will be saved when Unity recompiles [SerializeField] Color m_Color = Color.white;

void OnEnable() { titleContent = new GUIContent("GUI Color"); }

// a method to simplify adding menu items void AddMenuItemForColor(GenericMenu menu, string menuPath, Color color) { // the menu item is marked as selected if it matches the current value of m_Color menu.AddItem(new GUIContent(menuPath), m_Color.Equals(color), OnColorSelected, color); }

// the GenericMenu.MenuFunction2 event handler for when a menu item is selected void OnColorSelected(object color) { m_Color = (Color)color; }

void OnGUI() { // set the GUI to use the color stored in m_Color GUI.color = m_Color;

// display the GenericMenu when pressing a button if (GUILayout.Button("Select GUI Color")) { // create the menu and add items to it GenericMenu menu = new GenericMenu();

// forward slashes nest menu items under submenus AddMenuItemForColor(menu, "RGB/Red", Color.red); AddMenuItemForColor(menu, "RGB/Green", Color.green); AddMenuItemForColor(menu, "RGB/Blue", Color.blue);

// an empty string will create a separator at the top level menu.AddSeparator("");

AddMenuItemForColor(menu, "CMYK/Cyan", Color.cyan); AddMenuItemForColor(menu, "CMYK/Yellow", Color.yellow); AddMenuItemForColor(menu, "CMYK/Magenta", Color.magenta); // a trailing slash will nest a separator in a submenu menu.AddSeparator("CMYK/"); AddMenuItemForColor(menu, "CMYK/Black", Color.black);

menu.AddSeparator("");

AddMenuItemForColor(menu, "White", Color.white);

// display the menu menu.ShowAsContext(); } } }

属性

allowDuplicateNames允许菜单具有多个名称相同的项目。

公共方法

AddDisabledItem向菜单添加一个禁用的项目。
AddItem向菜单添加一个项目。
AddSeparator向菜单添加一个分隔符项目。
DropDown在给定的屏幕矩形区域显示菜单。
GetItemCount获取菜单中项目的数量。
ShowAsContext右键单击时,在鼠标下方显示菜单。

委托

MenuFunction回调函数,在选择菜单项时调用。
MenuFunction2带有用户数据的回调函数,在选择菜单项时调用。