Unity - Scripting API: EditorWindow
class in UnityEditor
/
Inherits from:ScriptableObject
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Description
Derive from this class to create a custom Editor window.
Use this class to create Editor windows that can either float independently or dock as tabs, similar to the default windows in the Unity Editor.
You can use the MenuItem attribute to configure an Editor window to be opened in the Unity Editor menu.
When creating a custom Editor window, follow these guidelines:
- Put code dependent on UXML/USS loading in the CreateGUI method to ensure that all necessary assets are available.
- Keep the event registration code inside CreateGUI or after CreateGUI is called.
The following diagram shows the order of execution of an Editor window:

- OnEnable: Called when the script is loaded or when the object is enabled.
- EditorApplication.isUpdating: If true, the Editor is currently refreshing the AssetDatabase.
- CreateGUI: Generates the graphical user interface if the Editor is not updating.
- Update: Called once per frame to update the script's logic.
- OnGUI: Called multiple times per frame for rendering and handling GUI events.
- OnDisable: Called when the script is disabled or the object is destroyed to finalize and clean up resources.
For an example on how to create an Editor window that reacts to user input, refer to Create a custom Editor window with C# script.
using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public class MyEditorWindow : EditorWindow { [MenuItem("Examples/My Editor Window")] public static void ShowExample() { MyEditorWindow wnd = GetWindow<MyEditorWindow>(); wnd.titleContent = new GUIContent("MyEditorWindow"); } public void CreateGUI() { // Each editor window contains a root VisualElement object VisualElement root = rootVisualElement; // VisualElements objects can contain other VisualElement following a tree hierarchy Label label = new Label("Hello World!"); root.Add(label); // Create button Button button = new Button(); button.name = "button"; button.text = "Button"; root.Add(button); // Create toggle Toggle toggle = new Toggle(); toggle.name = "toggle"; toggle.label = "Toggle"; root.Add(toggle); } }
Static Properties
| Property | Description |
|---|---|
| focusedWindow | The EditorWindow which currently has keyboard focus. (Read Only) |
| mouseOverWindow | The EditorWindow currently under the mouse cursor. (Read Only) |
Properties
| Property | Description |
|---|---|
| autoRepaintOnSceneChange | Enable this property to automatically repaint the window when the SceneView is modified. |
| dataModeController | An instance of IDataModeController to handle DataMode functionalities for the current window. |
| docked | Returns true if EditorWindow is docked. |
| EditorWindow | Dockarea we're inside. |
| hasFocus | Returns true if EditorWindow is focused. |
| hasUnsavedChanges | This property specifies whether the Editor prompts the user to save or discard unsaved changes before the window closes. |
| maximized | Whether or not this window is maximized? |
| maxSize | The maximum size of this window when it is floating or modal. The maximum size is not used when the window is docked. |
| minSize | The minimum size of this window when it is floating or modal. The minimum size is not used when the window is docked. |
| overlayCanvas | The OverlayCanvas for this window. |
| position | The desired position of the window in screen space. |
| rootVisualElement | Retrieves the root visual element of this window hierarchy. |
| saveChangesMessage | The message that displays to the user if they are prompted to save |
| titleContent | The GUIContent used for drawing the title of EditorWindows. |
| wantsLessLayoutEvents | Specifies whether a layout pass is performed before all user events (for example, EventType.MouseDown or EventType.KeyDown), or is only performed before repaint events. |
| 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. |
Public Methods
| Method | Description |
|---|---|
| BeginWindows | Mark the beginning area of all popup windows. |
| Close | Close the editor window. |
| DiscardChanges | Discards unsaved changes to the contents of the window. |
| EndWindows | Close a window group started with EditorWindow.BeginWindows. |
| Focus | Moves keyboard focus to another EditorWindow. |
| GetExtraPaneTypes | Gets the extra types of EditorWindow associated with the current window. |
| RemoveNotification | Stop showing notification message. |
| Repaint | Make the window repaint. This queues a command to render the window on the next frame. |
| SaveChanges | Performs a save action on the contents of the window. |
| 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. |
| ShowModal | Show modal editor window. |
| ShowModalUtility | Shows the EditorWindow as a floating modal window. |
| ShowNotification | Show a notification message. |
| ShowPopup | Shows an Editor window using popup-style framing. |
| ShowTab | Shows a docked Editor window. |
| ShowUtility | Show the EditorWindow as a floating utility window. |
| TryGetOverlay | Get an Overlay with matching ID from an EditorWindow canvas. |
Static Methods
| Method | Description |
|---|---|
| CreateWindow | Creates an EditorWindow of type T. |
| FocusWindowIfItsOpen | Focuses the first found EditorWindow of specified type if it is open. |
| GetWindow | Returns the first EditorWindow of type windowType which is currently on the screen. |
| GetWindowWithRect | Returns the first EditorWindow of type t which is currently on the screen. |
| HasOpenInstances | Checks if an editor window is open. |
Messages
| Message | Description |
|---|---|
| Awake | Called as the new window is opened. |
| CreateGUI | CreateGUI is called when the EditorWindow's rootVisualElement is ready to be populated. |
| hasUnsavedChanges | This property specifies whether the Editor prompts the user to save or discard unsaved changes before the window closes. |
| OnBecameInvisible | Called after the window is removed from a container view, or is no longer visible within a tabbed collection of EditorWindow. |
| OnBecameVisible | Called after the window is added to a container view. |
| 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. |
| saveChangesMessage | The message that displays to the user if they are prompted to save |
| Update | Called multiple times per second on all visible windows. |
Events
| Event | Description |
|---|---|
| windowFocusChanged | Called whenever the focused editor window is changed. |
Inherited Members
Properties
| Property | Description |
|---|---|
| hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
| name | The name of the object. |
Public Methods
| Method | Description |
|---|---|
| GetInstanceID | Gets the instance ID of the object. |
| ToString | Returns the name of the object. |
Static Methods
| Method | Description |
|---|---|
| Destroy | Removes a GameObject, component, or asset. |
| DestroyImmediate | Destroys the specified object immediately. Use with caution and in Edit mode only. |
| DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. |
| FindAnyObjectByType | Retrieves any active loaded object of Type type. |
| FindFirstObjectByType | Retrieves the first active loaded object of Type type. |
| FindObjectsByType | Retrieves a list of all loaded objects of Type type. |
| Instantiate | Clones the object original and returns the clone. |
| InstantiateAsync | Captures a snapshot of the original object (that must be related to some GameObject) and returns the AsyncInstantiateOperation. |
| CreateInstance | Creates an instance of a scriptable object. |
Operators
| Operator | Description |
|---|---|
| bool | Does 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. |
Messages
| Message | Description |
|---|---|
| Awake | Called when an instance of ScriptableObject is created. |
| OnDisable | This function is called when the scriptable object goes out of scope. |
| OnEnable | This function is called when the object is loaded. |
| OnValidate | Editor-only function that Unity calls when the script is loaded or a value changes in the Inspector. |
| Reset | Reset to default values. |