MainToolbarElementAttribute
класс в UnityEditor.Toolbars
Описание
Регистрирует статический метод, с помощью которого можно дополнить главную панель инструментов собственными элементами интерфейса.
Методы, помеченные этим атрибутом, возвращают MainToolbarElement или один из его дочерних типов. Также можно возвращать IEnumerable из MainToolbarElement для группирования нескольких элементов вместе (см. пример ниже). Каждый MainToolbarElement описывает содержание и поведение элемента панели инструментов, а главная панель инструментов запрашивает эти методы, когда ей нужно создать или обновить элементы панели инструментов.
Дополнительные ресурсы: MainToolbarButton, MainToolbarToggle, MainToolbarDropdown, MainToolbarSlider, MainToolbarLabel.
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); } }
Статические свойства
| Свойство | Описание |
|---|---|
| defaultMenuPriority | Значение по умолчанию для MainToolbarElement.menuPriority. Укажите приоритет ниже этого значения, чтобы пункт меню элемента основной панели инструментов отображался перед элементами по умолчанию, или укажите более высокое значение, чтобы он отображался после элементов по умолчанию. |
Свойства
| Свойство | Описание |
|---|---|
| defaultDockIndex | Укажите порядок, в котором пользовательские элементы будут пришвартованы на главной панели инструментов. |
| defaultDockPosition | Используйте это свойство, чтобы указать позицию элемента в док-станции по умолчанию: слева, посередине или справа. |
| menuPriority | Приоритет меню определяет порядок, в котором основные элементы панели инструментов отображаются в меню панели инструментов. |
| path | Уникальный идентификатор этого элемента панели инструментов. |