MainToolbarElement
Describes the content and behaviour of a main toolbar element.
Read time 2 minutesLast updated 6 days ago
Definition
- Type: Class
- Namespace: UnityEditor.Toolbars
- Assembly: UnityEditor.CoreModule
public abstract class MainToolbarElement
Remarks
The main toolbar uses these descriptors to create and update its toolbar elements.
Additional Resources: MainToolbarElementAttribute, MainToolbarButton, MainToolbarToggle, MainToolbarDropdown, MainToolbarSlider, MainToolbarLabel.
Examples
using System.Collections.Generic;using UnityEditor;using UnityEditor.Toolbars;using UnityEngine;using UnityEngine.UIElements;public class MyCustomElement { const string k_ToolbarElementName = "Examples/Analysis Windows"; static (string, string, string)[] s_Elements = new(string name, string tooptip, string menuPath)[] { // Open profiler window ("Profiler", "Open the Profiler window","Window/Analysis/Profiler"), // Open frame debugger window ("Frame Debugger", "Open the Frame Debugger window","Window/Analysis/Frame Debugger"), // Open physics debugger window ("Physics Debugger", "Open the Physics Debugger window","Window/Analysis/Physics Debugger") }; static bool s_DisplayAsButtons = true; [MainToolbarElement(k_ToolbarElementName, defaultDockPosition = MainToolbarDockPosition.Middle)] static IEnumerable<MainToolbarElement> CreateAnalysisWindowsBar() { if (s_DisplayAsButtons) { foreach (var element in s_Elements) { yield return new MainToolbarButton( new MainToolbarContent(element.Item1, element.Item2), () => EditorApplication.ExecuteMenuItem(element.Item3)) { populateContextMenu = PopulateContextMenu, }; } } else { yield return new MainToolbarDropdown( new MainToolbarContent("Analysis", "Open the list of available analysis windows"), ShowDropdownMenu) { populateContextMenu = PopulateContextMenu, }; } } static void PopulateContextMenu(DropdownMenu menu) { menu.AppendAction( L10n.Tr(s_DisplayAsButtons ? "Display as Dropdown" : "Display as Buttons"), UpdateDisplayType); } static void UpdateDisplayType(DropdownMenuAction _) { s_DisplayAsButtons = !s_DisplayAsButtons; MainToolbar.Refresh(k_ToolbarElementName); } static void ShowDropdownMenu(Rect dropDownRect) { var menu = new GenericMenu(); foreach (var element in s_Elements) { menu.AddItem(new GUIContent(element.Item1), false, () => { EditorApplication.ExecuteMenuItem(element.Item3); }); } menu.DropDown(dropDownRect); }}
Properties
Property | Description |
|---|---|
| content | The MainToolbarContent describes the content of a main toolbar element. For example, text, icon, or tooltip. |
| displayed | Specifies whether the |
| enabled | Specifies whether a toolbar element should receive input events. Set to |
| populateContextMenu | Add content to the context menu that appears when you right-click this toolbar element. |