Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


MainToolbarElement

Describes the content and behaviour of a main toolbar element.
Read time 2 minutesLast updated 6 days ago

Definition

public abstract class MainToolbarElement

Remarks

The main toolbar uses these descriptors to create and update its toolbar elements.

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

contentThe MainToolbarContent describes the content of a main toolbar element. For example, text, icon, or tooltip.
displayedSpecifies whether the
VisualElement
for this toolbar element should be displayed or not. Set to
True
by default.
enabledSpecifies whether a toolbar element should receive input events. Set to
True
by default.
populateContextMenuAdd content to the context menu that appears when you right-click this toolbar element.