unity GenericMenu
时间: 2024-12-29 20:05:14 浏览: 8
Unity的GenericMenu是一个用于创建上下文菜单或弹出菜单的类。它允许开发者根据需要在运行时动态生成菜单项,并为其添加自定义的功能。GenericMenu在编辑器扩展中非常常用,特别是在需要为自定义工具或编辑器窗口添加菜单选项时。
以下是GenericMenu的一些主要特点和使用方法:
1. **创建菜单**:可以通过`GenericMenu`类创建一个新的菜单实例。
2. **添加菜单项**:使用`AddItem`或`AddDisabledItem`方法可以添加菜单项,并为其指定一个显示名称和一个回调函数。
3. **设置选中状态**:使用`AddItem`方法时,可以通过传入一个布尔值来设置菜单项的选中状态。
4. **显示菜单**:调用`ShowAsContext`方法可以在当前鼠标位置显示菜单,或者使用`DropDown`方法在指定位置显示菜单。
以下是一个简单的示例代码,展示了如何在Unity中使用GenericMenu:
```csharp
using UnityEngine;
using UnityEditor;
public class GenericMenuExample : EditorWindow
{
[MenuItem("Window/GenericMenu Example")]
public static void ShowWindow()
{
GetWindow<GenericMenuExample>("GenericMenu Example");
}
private void OnGUI()
{
if (GUILayout.Button("Open Context Menu"))
{
GenericMenu menu = new GenericMenu();
menu.AddItem(new GUIContent("Option选项1"), false, OnOption1Selected);
menu.AddItem(new GUIContent("选项2"), true, OnOption2Selected);
menu.AddDisabledItem(new GUIContent("禁用选项"));
menu.ShowAsContext();
}
}
private void OnOption1Selected()
{
Debug.Log("选项1被选中");
}
private void OnOption2Selected()
{
Debug.Log("选项2被选中");
}
}
```
在这个示例中,我们创建了一个自定义的编辑器窗口,并在窗口中添加了一个按钮。当按钮被点击时,会弹出一个包含三个菜单项的上下文菜单:两个可选项和一个禁用项。
阅读全文