Version: 2021.3
언어: 한국어

PopupWindow

class in UnityEditor

/

다음으로부터 상속:EditorWindow

매뉴얼로 전환

설명

Class used to display popup windows that inherit from PopupWindowContent.

Popup Windows are borderless, and not draggable or resizable. They also will automatically close when they lose focus. They are intended to show short-lived information or options.

An example of a Popup window in the editor is the "Scene View Effects" options, in the Editor's Scene View toolbar:



Below is an example of a custom popup window which is displayed via a button in an editor window. The Popup has three toggle values, and will automatically close when it loses focus. The example is given as two scripts. The first defines an editor window that can be opened via a menu item. That editor window has a button which shows the popup. The second script defines the contents of the popup itself as a separate class.

First, this is the code for the simple editor window which launches the popup:

using UnityEngine;
using UnityEditor;

public class EditorWindowWithPopup : EditorWindow { // Add menu item [MenuItem("Example/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(); } } }

Next, this is the code for the popup itself:

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); } }

Each of these should be saved as separate files named after their class name. Neither are behaviours, so you do not need to place them on a gameobject. Once they are in your project, try it by going to the new "Example" menu and selecting Popup Example. Then click the button in the new editor window to reveal the popup options window.

.

보호되는 함수

OnDisableSee ScriptableObject.OnEnable.
OnEnableSee ScriptableObject.OnDisable.

정적 함수

ShowShow a popup with the given PopupWindowContent.

상속된 멤버

정적 변수

focusedWindowThe EditorWindow which currently has keyboard focus. (Read Only)
mouseOverWindowThe EditorWindow currently under the mouse cursor. (Read Only)

변수

autoRepaintOnSceneChangeDoes the window automatically repaint whenever the Scene has changed?
dockedReturns true if EditorWindow is docked.
hasFocusReturns true if EditorWindow is focused.
hasUnsavedChangesThis property specifies whether the Editor prompts the user to save or discard unsaved changes before the window closes.
maximizedIs this window maximized?
maxSizeThe maximum size of this window when it is floating or modal. The maximum size is not used when the window is docked.
minSizeThe minimum size of this window when it is floating or modal. The minimum size is not used when the window is docked.
positionThe desired position of the window in screen space.
rootVisualElementRetrieves the root visual element of this window hierarchy.
saveChangesMessageThe message that displays to the user if they are prompted to save
titleContentThe GUIContent used for drawing the title of EditorWindows.
wantsLessLayoutEventsSpecifies whether a layout pass is performed before all user events (for example, EventType.MouseDown or [[EventType, KeyDown]]), or is only performed before repaint events.
wantsMouseEnterLeaveWindowChecks whether MouseEnterWindow and MouseLeaveWindow events are received in the GUI in this Editor window.
wantsMouseMoveChecks whether MouseMove events are received in the GUI in this Editor window.
hideFlagsShould the object be hidden, saved with the Scene or modifiable by the user?
nameThe name of the object.

Public 함수

BeginWindowsMark the beginning area of all popup windows.
CloseClose the editor window.
DiscardChangesDiscards unsaved changes to the contents of the window.
EndWindowsClose a window group started with EditorWindow.BeginWindows.
FocusMoves keyboard focus to another EditorWindow.
GetExtraPaneTypesGets the extra panes associated with the window.
RemoveNotificationStop showing notification message.
RepaintMake the window repaint.
SaveChangesPerforms a save action on the contents of the window.
SendEventSends an Event to a window.
ShowShow the EditorWindow window.
ShowAsDropDownShows a window with dropdown behaviour and styling.
ShowAuxWindowShow the editor window in the auxiliary window.
ShowModalShow modal editor window.
ShowModalUtilityShow the EditorWindow as a floating modal window.
ShowNotificationShow a notification message.
ShowPopupShows an Editor window using popup-style framing.
ShowUtilityShow the EditorWindow as a floating utility window.
TryGetOverlayGet an Overlay with matching ID from an EditorWindow canvas.
GetInstanceIDGets the instance ID of the object.
ToStringReturns the name of the object.

보호되는 함수

OnBackingScaleFactorChangedCalled when the UI scaling for this EditorWindow is changed.

정적 함수

CreateWindowCreates an EditorWindow of type T.
FocusWindowIfItsOpenFocuses the first found EditorWindow of specified type if it is open.
GetWindowReturns the first EditorWindow of type t which is currently on the screen.
GetWindowWithRectReturns the first EditorWindow of type t which is currently on the screen.
HasOpenInstancesChecks if an editor window is open.
DestroyRemoves a GameObject, component or asset.
DestroyImmediateDestroys the object obj immediately. You are strongly recommended to use Destroy instead.
DontDestroyOnLoadDo not destroy the target Object when loading a new Scene.
FindObjectOfTypeReturns the first active loaded object of Type type.
FindObjectsOfTypeGets a list of all loaded objects of Type type.
InstantiateClones the object original and returns the clone.
CreateInstanceCreates an instance of a scriptable object.

연산자

boolDoes the object exist?
operator !=Compares if two objects refer to a different object.
operator ==Compares two object references to see if they refer to the same object.

메시지

AwakeCalled as the new window is opened.
CreateGUICreateGUI is called when the EditorWindow's rootVisualElement is ready to be populated.
hasUnsavedChangesThis property specifies whether the Editor prompts the user to save or discard unsaved changes before the window closes.
OnDestroyOnDestroy is called to close the EditorWindow window.
OnFocusCalled when the window gets keyboard focus.
OnGUIImplement your own editor GUI here.
OnHierarchyChangeHandler for message that is sent when an object or group of objects in the hierarchy changes.
OnInspectorUpdateOnInspectorUpdate is called at 10 frames per second to give the inspector a chance to update.
OnLostFocusCalled when the window loses keyboard focus.
OnProjectChangeHandler for message that is sent whenever the state of the project changes.
OnSelectionChangeCalled whenever the selection has changed.
saveChangesMessageThe message that displays to the user if they are prompted to save
UpdateCalled multiple times per second on all visible windows.
AwakeThis function is called when the ScriptableObject script is started.
OnDestroyThis function is called when the scriptable object will be destroyed.
OnValidateEditor-only function that Unity calls when the script is loaded or a value changes in the Inspector.
ResetReset to default values.