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.
.
OnDisable | See ScriptableObject.OnEnable. |
OnEnable | See ScriptableObject.OnDisable. |
Show | Show a popup with the given PopupWindowContent. |
focusedWindow | The EditorWindow which currently has keyboard focus. (Read Only) |
mouseOverWindow | The EditorWindow currently under the mouse cursor. (Read Only) |
autoRepaintOnSceneChange | Does the window automatically repaint whenever the Scene has changed? |
maximized | Is this window maximized? |
maxSize | The maximum size of this window. |
minSize | The minimum size of this window. |
position | The desired position of the window in screen space. |
titleContent | The GUIContent used for drawing the title of EditorWindows. |
wantsMouseEnterLeaveWindow | Checks whether MouseEnterWindow and MouseLeaveWindow events are received in the GUI in this Editor window. |
wantsMouseMove | Checks whether MouseMove events are received in the GUI in this Editor window. |
hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
name | El nombre del objeto. |
BeginWindows | Mark the beginning area of all popup windows. |
Close | Cerrar la ventana del editor. |
EndWindows | Close a window group started with EditorWindow.BeginWindows. |
Focus | Moves keyboard focus to another EditorWindow. |
RemoveNotification | Stop showing notification message. |
Repaint | Make the window repaint. |
SendEvent | Sends an Event to a window. |
Show | Show the EditorWindow window. |
ShowAsDropDown | Shows a window with dropdown behaviour and styling. |
ShowAuxWindow | Show the editor window in the auxiliary window. |
ShowNotification | Show a notification message. |
ShowPopup | Shows an Editor window using popup-style framing. |
ShowUtility | Show the EditorWindow as a floating utility window. |
GetInstanceID | Devuelve el id de la instancia del objeto. |
ToString | Returns the name of the object. |
FocusWindowIfItsOpen | Focuses the first found EditorWindow of specified type if it is open. |
GetWindow | Returns the first EditorWindow of type t which is currently on the screen. |
GetWindowWithRect | Returns the first EditorWindow of type t which is currently on the screen. |
Destroy | Removes a GameObject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. |
FindObjectOfType | Devuelve el primer objeto activo cargado de tipo type. |
FindObjectsOfType | Devuelve una lista de todos los objetos activos cargados de tipo type. |
Instantiate | Clona el objeto original y devuelve el clon. |
CreateInstance | Crea una instancia de un objeto scriptable. |
bool | ¿Existe el objeto? |
operator != | Compare si dos objetos se refieren a un objeto diferente. |
operator == | Compara dos referencias de objeto para ver si se refieren al mismo objeto. |
Awake | Called as the new window is opened. |
OnDestroy | OnDestroy is called to close the EditorWindow window. |
OnFocus | Called when the window gets keyboard focus. |
OnGUI | Implement your own editor GUI here. |
OnHierarchyChange | Handler for message that is sent when an object or group of objects in the hierarchy changes. |
OnInspectorUpdate | OnInspectorUpdate is called at 10 frames per second to give the inspector a chance to update. |
OnLostFocus | Called when the window loses keyboard focus. |
OnProjectChange | Handler for message that is sent whenever the state of the project changes. |
OnSelectionChange | Called whenever the selection has changed. |
Update | Called multiple times per second on all visible windows. |
Awake | Esta función se llama cuando el script ScriptableObject empieza. |
OnDestroy | Esta función se llama cuando el objeto scriptable se destruirá. |