atIndex | 插入项目的位置索引。 |
actionName | 项目的名称。此名称将显示在下拉菜单中。 |
action | 当用户在菜单中选择此项目时要执行的回调函数。 |
actionStatusCallback | 要执行的回调函数,用于确定项目的 状态。 |
userData | 要存储在 <b>userData</b> 属性中的对象 <see cref="DropdownMenuAction" /> 项目。此对象可以通过操作回调函数访问。 |
添加一个在下拉菜单中执行操作的项目。
该项目将添加到列表中指定索引的末尾。
using UnityEditor; using UnityEngine; using UnityEngine.UIElements;
public class ContextMenuWindow : EditorWindow { [MenuItem("My/Context Menu Window")] static void ShowMe() => GetWindow<ContextMenuWindow>();
void CreateGUI() { var contextMenuContainer = new VisualElement(); contextMenuContainer.style.flexGrow = 1; contextMenuContainer.AddManipulator(new ContextualMenuManipulator(e => { e.menu.AppendAction("My Action 1", a => Debug.Log("My Action 1 Works"), DropdownMenuAction.Status.Normal); // 0 e.menu.AppendAction("My Action 3", a => Debug.Log("My Action 3 Works"), DropdownMenuAction.Status.Normal); // 1 e.menu.AppendAction("Submenu/My Action 4", a => Debug.Log("My Action 4 Works"), DropdownMenuAction.Status.Normal); // 2 e.menu.AppendAction("Submenu/My Action 6", a => Debug.Log("My Action 6 Works"), DropdownMenuAction.Status.Normal); // 3
// Indices from 1 to 3 are shifted up index by 1. In result 'My Action 2' now has an index of 2. e.menu.InsertAction(1, "My Action 2", a => Debug.Log("My Action 2 Works"), DropdownMenuAction.AlwaysEnabled);
// If we want to insert an between submenu items, we have to use shifted indices e.menu.InsertAction(4, "Submenu/My Action 5", a => Debug.Log("My Action 5 Works"), DropdownMenuAction.AlwaysDisabled); }));
rootVisualElement.Add(contextMenuContainer); } }
atIndex | 插入项目的位置索引。 |
actionName | 项目的名称。此名称将显示在下拉菜单中。 |
action | 当用户在菜单中选择此项目时要执行的回调函数。 |
status | 项目的 状态。 |
添加一个在下拉菜单中执行操作的项目。
该项目将添加到列表中指定索引的末尾。
using UnityEditor; using UnityEngine; using UnityEngine.UIElements;
public class ContextMenuWindow : EditorWindow { [MenuItem("My/Context Menu Window")] static void ShowMe() => GetWindow<ContextMenuWindow>();
void CreateGUI() { var contextMenuContainer = new VisualElement(); contextMenuContainer.style.flexGrow = 1; contextMenuContainer.AddManipulator(new ContextualMenuManipulator(e => { e.menu.AppendAction("My Action 1", a => Debug.Log("My Action 1 Works"), DropdownMenuAction.Status.Normal); // 0 e.menu.AppendAction("My Action 3", a => Debug.Log("My Action 3 Works"), DropdownMenuAction.Status.Normal); // 1 e.menu.AppendAction("Submenu/My Action 4", a => Debug.Log("My Action 4 Works"), DropdownMenuAction.Status.Normal); // 2 e.menu.AppendAction("Submenu/My Action 6", a => Debug.Log("My Action 6 Works"), DropdownMenuAction.Status.Normal); // 3
// Indices from 1 to 3 are shifted up index by 1. In result 'My Action 2' now has an index of 2. e.menu.InsertAction(1, "My Action 2", a => Debug.Log("My Action 2 Works"), DropdownMenuAction.Status.Normal);
// If we want to insert an between submenu items, we have to use shifted indices e.menu.InsertAction(4, "Submenu/My Action 5", a => Debug.Log("My Action 5 Works"), DropdownMenuAction.Status.Disabled); }));
rootVisualElement.Add(contextMenuContainer); } }