PopupWindow
класс в UnityEditor
Наследуется от:EditorWindow
Описание
Класс, используемый для отображения всплывающих окон, наследуемых от PopupWindowContent.
Всплывающие окна Windows не имеют границ и не могут перетаскиваться или изменять размер. Они также автоматически закрываются, когда теряют фокус. Они предназначены для отображения кратковременной информации или опций.
Примером Всплывающего окна в редакторе является опция "Scene Эффекты Видения", на панели инструментов Видения Scene Редактора:
Ниже приведён пример пользовательского всплывающего окна, которое открывается кнопкой в окне редактора. У этого окна три переключателя, и оно автоматически закрывается при потере фокуса. Пример состоит из двух скриптов. Первый описывает окно редактора, которое открывается через пункт меню; в нём есть кнопка, показывающая всплывающее окно. Второй скрипт описывает содержимое самого всплывающего окна как отдельный класс.
Во-первых, это код для простого окна редактора, которое запускает всплывающее окно:
using UnityEngine; using UnityEditor;
public class EditorWindowWithPopup : EditorWindow { // Add menu item [MenuItem("Examples/Popup Example")] static void Init() { EditorWindow window = EditorWindow.CreateInstance<EditorWindowWithPopup>(); window.Show(); }
Rect buttonRect; void OnGUI() { { GUILayout.Label("Editor window with Popup example", EditorStyles.boldLabel); if (GUILayout.Button("Popup Options", GUILayout.Width(200))) { PopupWindow.Show(buttonRect, new PopupExample()); } if (Event.current.type == EventType.Repaint) buttonRect = GUILayoutUtility.GetLastRect(); } } }
Далее, это код для самого всплывающего окна:
using UnityEngine; using UnityEditor;
public class PopupExample : PopupWindowContent { bool toggle1 = true; bool toggle2 = true; bool toggle3 = true;
public override Vector2 GetWindowSize() { return new Vector2(200, 150); }
public override void OnGUI(Rect rect) { GUILayout.Label("Popup Options Example", EditorStyles.boldLabel); toggle1 = EditorGUILayout.Toggle("Toggle 1", toggle1); toggle2 = EditorGUILayout.Toggle("Toggle 2", toggle2); toggle3 = EditorGUILayout.Toggle("Toggle 3", toggle3); }
public override void OnOpen() { Debug.Log("Popup opened: " + this); }
public override void OnClose() { Debug.Log("Popup closed: " + this); } }
Каждый из них следует сохранить в отдельный файл с именем соответствующего класса. Ни один из них не является поведением, поэтому размещать их на игровом объекте не нужно. Когда они окажутся в проекте, откройте новое меню «Example» и выберите Popup Example. Затем нажмите кнопку в новом окне редактора, чтобы открыть окно параметров.
.
Статические свойства
| Свойство | Описание |
|---|---|
| invalidSizeLabelUssClassName | Имя USS-класса для метки, отображаемой, когда содержимое имеет недопустимый размер. |
Защищенные методы
Статические методы
| Метод | Описание |
|---|---|
| Show | Показать всплывающее окно с заданным PopupWindowContent. |
Унаследованные члены 8
Статические свойства
| Свойство | Описание |
|---|---|
| focusedWindow | EditorWindow, на котором в настоящее время находится фокус клавиатуры. (только для чтения) |
| mouseOverWindow | EditorWindow в настоящее время под курсором мыши. (только для чтения) |
Свойства
| Свойство | Описание |
|---|---|
| autoRepaintOnSceneChange | Включите это свойство для автоматического перерисовывания окна при изменении SceneView. |
| dataModeController | Экземпляр IDataModeController для обработки функций DataMode для текущего окна. |
| docked | Возвращает true, если EditorWindow закреплен. |
| EditorWindow | Мы внутри. |
| hasFocus | Возвращает true, если EditorWindow фокусируется. |
| hasUnsavedChanges | Это свойство определяет, будет ли Редактор предлагать пользователю сохранить или отбросить несохраненные изменения перед закрытием окна. |
| maximized | Будет ли это окно максимизировано? |
| maxSize | Максимальный размер этого окна, когда оно плавающее или модальное. Максимальный размер не используется, когда окно пришвартировано. |
| minSize | Минимальный размер этого окна, когда оно плавающее или модальное. Минимальный размер не используется, когда окно пришвартировано. |
| overlayCanvas | OverlayCanvas для этого окна. |
| position | Желаемое положение окна в пространстве экрана. |
| rootVisualElement | Получает корневой визуальный элемент этой иерархии окон. |
| saveChangesMessage | Сообщение, которое отображается пользователю при получении запроса на сохранение |
| titleContent | GUIContent используется для рисования названия EditorWindows. |
| wantsLessLayoutEvents | Указывает, выполняется ли проход макета перед всеми событиями пользователя (например, EventType.MouseDown или EventType.KeyDown) или только перед событиями перерисовки. |
| wantsMouseEnterLeaveWindow | Проверяет, получены ли события MouseEnterWindow и MouseLeaveWindow в GUI в этом окне Редактора. |
| wantsMouseMove | Проверяет, получены ли события MouseMove в GUI в этом окне Редактора. |
| hideFlags | Должен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем? |
| name | Имя объекта. |
Открытые методы
| Метод | Описание |
|---|---|
| BeginWindows | Отметить начальную область всех всплывающих окон. |
| Close | Закройте окно редактора. |
| DiscardChanges | Отбрасывает несохраненные изменения в содержимом окна. |
| EndWindows | Закрыть группу окон, начинающуюся с EditorWindow.BeginWindows. |
| Focus | Перемещает фокус клавиатуры на другой EditorWindow. |
| GetExtraPaneTypes | Получает дополнительные типы EditorWindow, связанные с текущим окном. |
| RemoveNotification | Прекратить показ сообщения об уведомлении. |
| Repaint | Заставить окно перекраситься. Это ставит в очередь команду для отображения окна в следующем кадре. |
| SaveChanges | Выполняет сохранение содержимого окна. |
| SendEvent | Отправляет Событие в окно. |
| Show | Показать окно EditorWindow. |
| ShowAsDropDown | Отображает окно с поведением выпадающего списка и стилем. |
| ShowAuxWindow | Показать окно редактора во вспомогательном окне. |
| ShowModal | Показать модальный редактор. |
| ShowModalUtility | Показывает EditorWindow как плавающее модальное окно. |
| ShowNotification | Показать сообщение об уведомлении. |
| ShowPopup | Отображает окно редактора с использованием всплывающих окон. |
| ShowTab | Показывает пришвартованное окно Редактора. |
| ShowUtility | Показывать EditorWindow как плавающее окно. |
| TryGetOverlay | Получить Оверлей с соответствующим ID из EditorWindow полотна. |
| GetInstanceID | Получает экземпляр ID объекта. |
| ToString | Возвращает имя объекта. |
Защищенные методы
| Метод | Описание |
|---|---|
| OnBackingScaleFactorChanged | Вызывается при изменении масштаба UI для этого EditorWindow. |
Статические методы
| Метод | Описание |
|---|---|
| CreateWindow | Создает EditorWindow типа T. |
| FocusWindowIfItsOpen | Фокусирует первый найденный EditorWindow указанного типа, если он открыт. |
| GetWindow | Возвращает первый EditorWindow типа windowType, который в данный момент находится на экране. |
| GetWindowWithRect | Возвращает первый EditorWindow типа t, который в данный момент находится на экране. |
| HasOpenInstances | Проверяет открытость окна редактора. |
| Destroy | Удаляет GameObject, компонент или ресурс. |
| DestroyImmediate | Немедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования. |
| DontDestroyOnLoad | Не уничтожать целевой Объект при загрузке нового Scene. |
| FindAnyObjectByType | Получает любой активный загруженный объект типа Type. |
| FindFirstObjectByType | Получает первый активный загруженный объект типа Type. |
| FindObjectsByType | Получает список всех загруженных объектов типа Type. |
| Instantiate | Клонирует исходный объект и возвращает клон. |
| InstantiateAsync | Захватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation. |
| CreateInstance | Создает экземпляр скриптового объекта. |
Операторы
| Оператор | Описание |
|---|---|
| bool | Существует ли объект? |
| оператор!= | Сравнивает, если два объекта ссылаются на разные объекты. |
| оператор == | Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту. |
Сообщения
| Сообщение | Описание |
|---|---|
| Awake | Вызывается при открытии нового окна. |
| CreateGUI | CreateGUI вызывается, когда EditorWindow's rootVisualElement готова к заполнению. |
| hasUnsavedChanges | Это свойство определяет, будет ли Редактор предлагать пользователю сохранить или отбросить несохраненные изменения перед закрытием окна. |
| OnBecameInvisible | Вызывается после того, как окно удалено из контейнерного представления или больше не видно в коллекции EditorWindow с вкладками. |
| OnBecameVisible | Вызывается после добавления окна в представление контейнера. |
| OnDestroy | OnDestroy вызывается для закрытия окна EditorWindow. |
| OnFocus | Вызывается, когда окно получает фокус клавиатуры. |
| OnGUI | Реализуйте свой собственный редактор GUI здесь. |
| OnHierarchyChange | Обработчик для сообщения, которое отправляется при изменении объекта или группы объектов в иерархии. |
| OnInspectorUpdate | OnInspectorUpdate вызывается с частотой 10 кадров в секунду, чтобы дать инспектору возможность обновить изображение. |
| OnLostFocus | Вызывается, когда окно теряет фокус клавиатуры. |
| OnProjectChange | Обработчик сообщения, которое отправляется при каждом изменении состояния проекта. |
| OnSelectionChange | Вызывается при изменении выбора. |
| saveChangesMessage | Сообщение, которое отображается пользователю при получении запроса на сохранение |
| Update | Вызывается несколько раз в секунду на всех видимых окнах. |
| Awake | Вызывается при создании экземпляра ScriptableObject. |
| OnDestroy | Эта функция вызывается, когда скриптовый объект будет уничтожен. |
| OnValidate | Функция только для редактора, которую вызывает Unity при загрузке скрипта или изменении значения в Inspector. |
| Reset | Сброс значений по умолчанию. |
Мероприятия
| Мероприятие | Описание |
|---|---|
| windowFocusChanged | Вызывается при изменении фокуса окна редактора. |