GenericDropdownMenu
класс в UnityEngine.UIElements
Наследуется от:UIElements.AbstractGenericMenu
Выполнено в:UnityEngine.UIElementsModule
Описание
GenericDropdownMenu позволяет отображать контекстные меню с текстовыми опциями по умолчанию или любыми VisualElement.
Метод GenericDropdownMenu представляет собой типовую реализацию выпадающего меню, которое можно использовать как в Редакторе UI, так и во время выполнения UI.
В следующем примере создается выпадающее меню с тремя пунктами. Меню отображается, когда пользователь нажимает на кнопку. В примере также показано, как установить ширину выпадающего меню с помощью метода DropDown.
using UnityEditor; using UnityEngine; using UnityEngine.UIElements;
public class MenuExample : EditorWindow {
[MenuItem("Window/UI Toolkit/MenuExample")] public static void ShowExample() { MenuExample wnd = GetWindow<MenuExample>(); wnd.titleContent = new GUIContent("MenuExample"); } public void CreateGUI() { VisualElement root = rootVisualElement;
// Create a button. var button = new Button(); button.text = "Button"; button.style.width = 70; button.RegisterCallback<FocusInEvent>(OnFocusIn); button.RegisterCallback<FocusOutEvent>(OnFocusOut);
// Create a dropdown menu with three items. var menu = new GenericDropdownMenu(); menu.AddItem("Item 1", false, a => { Debug.Log("Item 1 was selected"); }, null); menu.AddItem("Item 2", false, a => { Debug.Log("Item 2 was selected"); }, null); menu.AddItem("Item 3 has a very very long label", false, a => { Debug.Log("Item 3 was selected"); }, null);
// Return focus to the button when the menu is closed. menu.onClose += () => { button.Focus(); };
// When the button is clicked, the dropdown menu is displayed aligned with the button's world boundaries. button.clicked += () => { // The third and the fourth parameters of the DropDown set the width of the dropdown menu. // This sets the width of the dropdown menu to the width of the container. menu.DropDown(button.worldBound, button, false); // This sets the width of the dropdown menu to the width of the button. // menu.DropDown(button.worldBound, button, true, false); // This sets the width of the dropdown menu to the width of the longest item. // menu.DropDown(button.worldBound, button, true, true); };
root.Add(button); }
void OnFocusIn(FocusInEvent evt) { // When the button receives focus, set the background color to a lighter gray. var button = evt.currentTarget as Button; button.style.backgroundColor = Color.dimGray; }
void OnFocusOut(FocusOutEvent evt) { // When the button loses focus, return its color to the default color. var button = evt.currentTarget as Button;
// Menu also steals focus, but we don't want to reset the color in that case. if (evt.relatedTarget is VisualElement { userData: GenericDropdownMenu menu } && menu.targetElement == button) { return; }
button.style.backgroundColor = StyleKeyword.Null; } }
Статические свойства
| Свойство | Описание |
|---|---|
| checkmarkUssClassName | Имя USS-класса для разделителей в элементах этого типа. |
| containerInnerUssClassName | Имя USS-класса для внутренних контейнеров в элементах этого типа. |
| containerOuterUssClassName | Имя USS-класса для внешних контейнеров в элементах этого типа. |
| contentWidthUssClassName | Имя USS-класса, добавляемое, когда GenericDropdownMenu подстраивается под ширину своего содержимого. |
| itemContentUssClassName | Имя USS-класса для меток в элементах этого типа. |
| itemUssClassName | Имя USS-класса для меток в элементах этого типа. |
| labelUssClassName | Имя USS-класса для меток в элементах этого типа. |
| separatorUssClassName | Имя USS-класса для разделителей в элементах этого типа. |
| ussClassName | Имя USS-класса для элементов этого типа. |
Свойства
| Свойство | Описание |
|---|---|
| contentContainer | Возвращает контейнер содержимого для GenericDropdownMenu. Позволяет пользователям создавать собственные раскрывающиеся меню, если они не хотят использовать реализацию по умолчанию. Он содержит ссылку на меню в его VisualElement.userData. |
| targetElement | Возвращает элемент, определяющий, какой корень использовать в качестве родительского для меню. |
Конструкторы
| Конструктор | Описание |
|---|---|
| GenericDropdownMenu | Инициализирует и возвращает экземпляр GenericDropdownMenu. |
Открытые методы
| Метод | Описание |
|---|---|
| AddDisabledItem | Добавление отключенного элемента в это меню с использованием VisualElement по умолчанию. |
| AddItem | Добавление элемента в это меню с использованием VisualElement по умолчанию. |
| AddSeparator | Добавляет визуальный разделитель после ранее добавленных элементов в этом меню. |
| DropDown | Отображает меню в указанной позиции. |
Мероприятия
| Мероприятие | Описание |
|---|---|
| onClose | Действие, которое вызывают после закрытия меню. |
| onOpen | Действие, которое вызывается перед открытием меню. |