atIndex | The index to insert the item at. |
icon | The icon to display to the user. |
action | The callback to execute when the user selects this item in the menu. |
actionStatusCallback | The callback to execute to determine the status of the item. |
userData | The object to store in the <b>userData</b> property of the <see cref="DropdownMenuAction" /> item. |
Adds a header item to the dropdown menu.
The item is added at the end of the specified index in the list.
using UnityEditor; using UnityEditor.UIElements; using UnityEngine; using UnityEngine.UIElements;
public class ContextMenuWindow : EditorWindow { [MenuItem("My/Context Menu Window")] static void ShowMe() => GetWindow<ContextMenuWindow>(); Texture2D icon1; Texture2D icon2; Texture2D icon3; void CreateGUI() { var contextMenuContainer = new VisualElement(); contextMenuContainer.style.flexGrow = 1; contextMenuContainer.AddManipulator(new ContextualMenuManipulator(e => { e.menu.AppendHeaderAction(icon2, a => Debug.Log("My Action 2 Works"), a => { a.tooltip = "Icon 2"; return DropdownMenuAction.Status.Normal; }); e.menu.InsertHeaderAction(0, icon1, a => Debug.Log("My Action 1 Works"), a => { a.tooltip = "Icon 1"; return DropdownMenuAction.Status.Normal; }); e.menu.InsertHeaderAction(2, icon3, a => Debug.Log("My Action 3 Works"), a => { a.tooltip = "Icon 3"; return DropdownMenuAction.Status.Normal; }); e.menu.AppendAction("My Menu Item Action", a => Debug.Log("My Menu Item Action Works"), DropdownMenuAction.Status.Normal); })); var icon1Field = new ObjectField() { label = "Icon 1", objectType = typeof(Texture2D) }; icon1Field.RegisterValueChangedCallback(e => icon1 = (Texture2D)e.newValue); var icon2Field = new ObjectField() { label = "Icon 2", objectType = typeof(Texture2D) }; icon2Field.RegisterValueChangedCallback(e => icon2 = (Texture2D)e.newValue); var icon3Field = new ObjectField() { label = "Icon 3", objectType = typeof(Texture2D) }; icon3Field.RegisterValueChangedCallback(e => icon3 = (Texture2D)e.newValue); contextMenuContainer.Add(icon1Field); contextMenuContainer.Add(icon2Field); contextMenuContainer.Add(icon3Field); rootVisualElement.Add(contextMenuContainer); } }