index | The index of the item to remove. |
Removes the menu header item at index.
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(icon1, a => Debug.Log("My Action 1 Works"), a => { a.tooltip = "Icon 1"; return DropdownMenuAction.Status.Normal; }); e.menu.AppendHeaderAction(icon2, a => Debug.Log("My Action 2 Works"), a => { a.tooltip = "Icon 2"; return DropdownMenuAction.Status.Normal; }); e.menu.AppendHeaderAction(icon3, a => Debug.Log("My Action 3 Works"), a => { a.tooltip = "Icon 3"; return DropdownMenuAction.Status.Normal; }); e.menu.RemoveHeaderItemAt(0); // Remove Icon 1 e.menu.RemoveHeaderItemAt(1); // Remove Icon 3 (After first removal item indices have shifted) 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); } }