Version: 2022.3
LanguageEnglish
  • C#

EditorWindow

class in UnityEditor

/

Inherits from:ScriptableObject

Suggest a change

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.

Close

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.

Close

Cancel

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 configre an Editor windows 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

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

Properties

autoRepaintOnSceneChangeEnable this property to automatically repaint the window when the SceneView is modified.
dataModeControllerAn instance of IDataModeController to handle DataMode functionalities for the current window.
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.
maximizedWhether or not this window is 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.
overlayCanvasThe OverlayCanvas for this window.
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.

Public Methods

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.
ShowModalUtilityShows the EditorWindow as a floating modal window.
ShowNotificationShow a notification message.
ShowPopupShows an Editor window using popup-style framing.
ShowTabShows a docked Editor window.
ShowUtilityShow the EditorWindow as a floating utility window.
TryGetOverlayGet an Overlay with matching ID from an EditorWindow canvas.

Protected Methods

OnBackingScaleFactorChangedCalled when the UI scaling for this EditorWindow is changed.

Static Methods

CreateWindowCreates an EditorWindow of type T.
FocusWindowIfItsOpenFocuses the first found EditorWindow of specified type if it is open.
GetWindowReturns the first EditorWindow of type windowType 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.

Messages

AwakeCalled as the new window is opened.
CreateGUI CreateGUI 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.
OnBecameInvisibleCalled after the window is removed from a container view, or is no longer visible within a tabbed collection of EditorWindow.
OnBecameVisibleCalled after the window is added to a container view.
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.

Inherited Members

Properties

hideFlagsShould the object be hidden, saved with the Scene or modifiable by the user?
nameThe name of the object.

Public Methods

GetInstanceIDGets the instance ID of the object.
ToStringReturns the name of the object.

Static Methods

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.
FindAnyObjectByTypeRetrieves any active loaded object of Type type.
FindFirstObjectByTypeRetrieves the first active loaded object of Type type.
FindObjectOfTypeReturns the first active loaded object of Type type.
FindObjectsByTypeRetrieves a list of all loaded objects of Type type.
FindObjectsOfTypeGets a list of all loaded objects of Type type.
InstantiateClones the object original and returns the clone.
InstantiateAsyncCaptures a snapshot of the original object (that must be related to some GameObject) and returns the AsyncInstantiateOperation.
CreateInstanceCreates an instance of a scriptable object.

Operators

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.

Messages

AwakeCalled when an instance of ScriptableObject is created.
OnDisableThis function is called when the scriptable object goes out of scope.
OnEnableThis function is called when the object is loaded.
OnValidateEditor-only function that Unity calls when the script is loaded or a value changes in the Inspector.
ResetReset to default values.