Описание
Класс, используемый для отображения всплывающих окон, наследуемых от PopupWindowContent .
Всплывающие окна не имеют рамок, их нельзя перетаскивать или изменять размер. Они также автоматически закрываются, когда теряют фокус. Они предназначены для отображения краткосрочной информации или параметров.
Примером всплывающего окна в редакторе являются параметры «Эффекты просмотра сцены» на панели инструментов «Просмотр сцены» в редакторе:
Ниже приведен пример пользовательского всплывающего окна, которое отображается с помощью кнопки в окне редактора. Всплывающее окно имеет три переключаемых значения и автоматически закрывается, когда теряет фокус. Пример приведен в виде двух скриптов. Первый определяет окно редактора, которое можно открыть через пункт меню. В этом окне редактора есть кнопка, которая показывает всплывающее окно. Второй скрипт определяет содержимое самого всплывающего окна как отдельный класс.
Во-первых, это код простого окна редактора, который запускает всплывающее окно:
using UnityEngine;
using UnityEditor ; public class EditorWindowWithPopup : EditorWindow
{
// Add menu item
[MenuItem ("Example/Popup Example")]
static void Init()
{
EditorWindow window = EditorWindow.CreateInstance();
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);
}
}
Каждый из них должен быть сохранен в виде отдельных файлов, названных в честь их класса. Как и поведение, поэтому вам не нужно размещать их на игровом объекте. Как только они появятся в вашем проекте, попробуйте их, перейдя в новое меню «Пример» и выбрав «Пример всплывающего окна». Затем нажмите кнопку в новом окне редактора, чтобы открыть всплывающее окно параметров.
Защищенные методы
Статические Методы
Show
Показать всплывающее окно с заданным PopupWindowContent.
Унаследованные члены
Статические Свойства
focusedWindow
Окно EditorWindow, которое в данный момент находится в фокусе клавиатуры. (Только чтение)
mouseOverWindow
Окно EditorWindow, находящееся в данный момент под курсором мыши. (Только чтение)
Свойства
autoRepaintOnSceneChange
Перерисовывается ли окно автоматически при изменении сцены?
docked
Возвращает значение true, если EditorWindow закреплен.
hasFocus
Возвращает true, если EditorWindow находится в фокусе.
hasUnsavedChanges
Если в производном классе установлено значение true, редактор предложит пользователю сохранить несохраненные изменения, если окно будет закрыто.
maximized
Развернуто ли это окно?
maxSize
Максимальный размер этого окна.
minSize
Минимальный размер этого окна.
position
Желаемое положение окна в пространстве экрана.
rootVisualElement
Извлекает корневой визуальный элемент этой иерархии окон.
saveChangesMessage
Сообщение, которое отображается пользователю, если ему предлагается сохранить
titleContent
GUIContent, используемый для отображения заголовка EditorWindows.
wantsLessLayoutEvents
Указывает, выполняется ли передача макета перед всеми пользовательскими событиями (например, EventType.MouseDown или [[EventType, KeyDown]]) или только перед событиями перерисовки.
wantsMouseEnterLeaveWindow
Проверяет, принимаются ли события MouseEnterWindow и MouseLeaveWindow в графическом интерфейсе в этом окне редактора.
wantsMouseMove
Проверяет, принимаются ли события MouseMove в графическом интерфейсе в этом окне редактора.
hideFlags
Должен ли объект быть скрыт, сохранен вместе со сценой или изменен пользователем?
name
Имя объекта.
Публичные Методы
Статические Методы
CreateWindow
Создает окно EditorWindow типа T.
FocusWindowIfItsOpen
Фокусирует первое найденное окно EditorWindow указанного типа, если оно открыто.
GetWindow
Возвращает первое окно EditorWindow типа t, которое в данный момент находится на экране.
GetWindowWithRect
Возвращает первое окно EditorWindow типа t, которое в данный момент находится на экране.
HasOpenInstances
Проверяет, открыто ли окно редактора.
Destroy
Удаляет игровой объект, компонент или ресурс.
DestroyImmediate
Немедленно уничтожает объект obj. Вместо этого вам настоятельно рекомендуется использовать Destroy.
DontDestroyOnLoad
Не уничтожайте целевой объект при загрузке новой сцены.
FindObjectOfType
Возвращает первый активный загруженный объект типа Type.
FindObjectsOfType
Получает список всех загруженных объектов типа Type.
Instantiate
Клонирует исходный объект и возвращает клон.
CreateInstance
Создает экземпляр объекта, доступного для сценария.
Операторы
bool
Объект существует?
operator !=
Сравнивает, ссылаются ли два объекта на другой объект.
operator ==
Сравнивает две ссылки на объекты, чтобы определить, ссылаются ли они на один и тот же объект.
Сообщения
Awake
Вызывается при открытии нового окна.
CreateGUI
CreateGUI вызывается, когда элемент rootVisualElement EditorWindow готов к заполнению.
hasUnsavedChanges
Если в производном классе установлено значение true, редактор предложит пользователю сохранить несохраненные изменения, если окно будет закрыто.
OnDestroy
OnDestroy вызывается для закрытия окна EditorWindow.
OnFocus
Вызывается, когда окно получает фокус клавиатуры.
OnGUI
Реализуйте свой собственный графический интерфейс редактора здесь.
OnHierarchyChange
Обработчик сообщения, отправляемого при изменении объекта или группы объектов в иерархии.
OnInspectorUpdate
OnInspectorUpdate вызывается со скоростью 10 кадров в секунду, чтобы дать инспектору возможность обновиться.
OnLostFocus
Вызывается, когда окно теряет фокус клавиатуры.
OnProjectChange
Обработчик сообщения, которое отправляется при изменении состояния проекта.
OnSelectionChange
Вызывается при каждом изменении выделения.
saveChangesMessage
Сообщение, которое отображается пользователю, если ему предлагается сохранить
Update
Вызывается несколько раз в секунду для всех видимых окон.
Awake
Эта функция вызывается при запуске сценария ScriptableObject.
OnDestroy
Эта функция вызывается, когда объект, доступный для сценария, будет уничтожен.
OnDisable
Эта функция вызывается, когда объект, доступный для сценария, выходит за пределы области видимости.
OnEnable
Эта функция вызывается при загрузке объекта.
OnValidate
Функция только для редактора, которую Unity вызывает при загрузке скрипта или изменении значения в Инспекторе.
Reset
Восстановить значения по умолчанию.