MainToolbarDropdown
класс в UnityEditor.Toolbars
Наследуется от:Toolbars.MainToolbarElement
Описание
Описывает содержание и поведение элемента раскрывающегося списка для основной панели инструментов.
Возвращайте экземпляр этого класса через статический метод, зарегистрированный с помощью MainToolbarElementAttribute чтобы добавить элемент раскрывающегося списка в основной панели инструментов. Следующий пример демонстрирует раскрывающийся список, который переключает активную сцену.
using System.IO; using UnityEditor; using UnityEditor.SceneManagement; using UnityEditor.Toolbars; using UnityEngine; using UnityEngine.SceneManagement; public class MainToolbarDropdownSceneSelectorExample { const string kElementPath = "Examples/Scene Selector"; static string[] scenePaths; [MainToolbarElement(kElementPath, defaultDockPosition = MainToolbarDockPosition.Middle)] public static MainToolbarElement CreateSceneSelectorDropdown() { string activeSceneName; if (Application.isPlaying) activeSceneName = SceneManager.GetActiveScene().name; else activeSceneName = EditorSceneManager.GetActiveScene().name; if (activeSceneName.Length == 0) activeSceneName = "Untitled"; var icon = EditorGUIUtility.IconContent("UnityLogo").image as Texture2D; var content = new MainToolbarContent(activeSceneName, icon, "Select active scene"); return new MainToolbarDropdown(content, ShowDropdownMenu); } static void ShowDropdownMenu(Rect dropDownRect) { var menu = new GenericMenu(); if (scenePaths.Length == 0) { menu.AddDisabledItem(new GUIContent("No Scenes in Project")); } foreach (string scenePath in scenePaths) { string sceneName = Path.GetFileNameWithoutExtension(scenePath); menu.AddItem(new GUIContent(sceneName), false, () => { SwitchScene(scenePath); }); } menu.DropDown(dropDownRect); } static void SwitchScene(string scenePath) { if (Application.isPlaying) { string sceneName = Path.GetFileNameWithoutExtension(scenePath); if (Application.CanStreamedLevelBeLoaded(sceneName)) { Debug.Log($"Switching to scene: {sceneName}"); SceneManager.LoadScene(sceneName); } else { Debug.LogError($"Scene '{sceneName}' is not in the Build Settings."); } } else { if (File.Exists(scenePath)) { if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) { Debug.Log($"Switching to scene: {scenePath}"); EditorSceneManager.OpenScene(scenePath); } } else { Debug.LogError($"Scene at path '{scenePath}' does not exist."); } } } static void RefreshSceneList() { scenePaths = Directory.GetFiles("Assets", "*.unity", SearchOption.AllDirectories); } static void SceneSwitched(Scene oldScene, Scene newScene) { MainToolbar.Refresh(kElementPath); } static MainToolbarDropdownSceneSelectorExample() { RefreshSceneList(); EditorApplication.projectChanged += RefreshSceneList; SceneManager.activeSceneChanged += SceneSwitched; EditorSceneManager.activeSceneChangedInEditMode += SceneSwitched; } }
В следующем примере показан простой раскрывающийся список выбора.
using UnityEditor; using UnityEditor.Toolbars; using UnityEngine; public class MainToolbarDropdownExample { const string kElementPath = "Examples/Example Dropdown"; static string selectedItem = "Item 1"; [MainToolbarElement(kElementPath, defaultDockPosition = MainToolbarDockPosition.Middle)] public static MainToolbarElement CreateExampleDropdown() { var content = new MainToolbarContent(selectedItem); return new MainToolbarDropdown(content, ShowDropdownMenu); } static void ShowDropdownMenu(Rect dropDownRect) { var menu = new GenericMenu(); menu.AddItem(new GUIContent("Item 1"), false, () => { selectedItem = "Item 1"; MainToolbar.Refresh(kElementPath); }); menu.AddItem(new GUIContent("Item 2"), false, () => { selectedItem = "Item 2"; MainToolbar.Refresh(kElementPath); }); menu.AddItem(new GUIContent("Item 3"), false, () => { selectedItem = "Item 3"; MainToolbar.Refresh(kElementPath); }); menu.DropDown(dropDownRect); } }
Конструкторы
| Конструктор | Описание |
|---|---|
| MainToolbarDropdown | Укажите содержимое и функцию раскрывающегося списка главной панели инструментов. |
Унаследованные члены 1
Свойства
| Свойство | Описание |
|---|---|
| content | MainToolbarContent описывает содержание элемента основной панели инструментов. Например, текст, значок или tooltip. |
| displayed | Указывает, должен ли отображаться `VisualElement` для этого элемента панели инструментов. По умолчанию установлено значение `True`. |
| enabled | Указывает, должен ли элемент панели инструментов получать события ввода. По умолчанию установлено значение `True`. |
| populateContextMenu | Добавить содержимое в контекстное меню, которое появляется при щелчке правой кнопкой мыши этого элемента панели инструментов. |