When you become a pro you start customizing the product to your need. Unity experts generally have multiple custom features into their editor that helps in their workflow. To start with let’s try to build a custom window in our Unity Editor.
We will learn the following concepts in this tutorial
Note: Do not add any editor scripts to your Gameobjects
Creating an Empty Editor Window
Right click on the Project Window>Create>C# Script.
Let’s name it MyWindow.
Open MyWindow script in your code editor.
Add the namespace “using UnityEditor”. This is required for all editor scripts.
We need to drive the class from EditorWindow rather than MonoBehaviour.
using UnityEditor;
using UnityEngine;
public class MyWindow : EditorWindow
{
void OnGUI()
{
}
}
Now you have created a new Window that is totally empty and no way to Open.
In order to enable Unity to open your window you need to add a public static function that calls the window.
Here is the code sample
public class MyWindow : EditorWindow
{
public static void ShowWindow()
{
EditorWindow.GetWindow(typeof(MyWindow));
}
void OnGUI()
{
}
}
Creating a new Menu Item in Unity editor
Let’s create a new Menu item so that you can access your Window from the Unity Editor’s Menu.
This can be done with a simple line of code where you call the MenuItem function and pass your window path.
Let’s place out window under Windows menu.
[MenuItem("Window/My Window")]
Save your script and head back to your Unity Editor.
Now you should see a My Window menu item.

Now if you click on My Window menu item, you should see an empty window with the title My Window
Populating your window items
Whatever you want to add in your window should go into the OnGUI function of your code.
Most of the UI elements will be inside the following three funcitons
- GUILayout
- EditorGUILayout
- EditorGUI
For the sake of this tutorial, let’s add a Label, a Text field, a Boolean check box, a Slider and a Button.
Lable and Button will be under GUILayout. The rest of the components will be under EditorGUILayout.
Add the following script to your OnGUI function.
void OnGUI()
{
GUILayout.Label ("This is My Window", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField ("Text Field", myString);
myBool = EditorGUILayout.Toggle ("Toggle", myBool);
myFloat = EditorGUILayout.Slider ("Slider", myFloat, 0, 10);
GUILayout.Button("My button");
}
Your custom window should look like this
