Creating a Custom Editor Window in Unity

Unity's editor scripting capabilities allow developers to extend the functionality of the Unity Editor to suit their needs. One powerful way to do this is by creating custom editor windows. In this tutorial, we'll create a simple custom editor window that allows you to batch rename game objects in your scene. This tool can be a huge time-saver when dealing with large numbers of objects.

Step 1: Setting Up the Script

First, we need to create a new script that will define our custom editor window. In Unity, go to Assets > Create > C# Script and name it BatchRenamer.

Step 2: Writing the Custom Editor Window Script

Open the BatchRenamer.cs script and replace its contents with the following code:

using UnityEditor;
using UnityEngine;

public class BatchRenamer : EditorWindow
{
    private string baseName = "GameObject";
    private int startNumber = 0;

    [MenuItem("Window/Batch Renamer")]
    public static void ShowWindow()
    {
        GetWindow<BatchRenamer>("Batch Renamer");
    }

    private void OnGUI()
    {
        GUILayout.Label("Batch Rename GameObjects", EditorStyles.boldLabel);

        baseName = EditorGUILayout.TextField("Base Name", baseName);
        startNumber = EditorGUILayout.IntField("Start Number", startNumber);

        if (GUILayout.Button("Rename"))
        {
            RenameGameObjects();
        }
    }

    private void RenameGameObjects()
    {
        GameObject[] selectedObjects = Selection.gameObjects;
        for (int i = 0; i < selectedObjects.Length; i++)
        {
            selectedObjects[i].name = baseName + (startNumber + i);
        }
    }
}

Explanation of the Code

Here's what each part of the script does:

  • BatchRenamer : EditorWindow: This class inherits from EditorWindow, making it a custom editor window.
  • [MenuItem("Window/Batch Renamer")]: This attribute adds an item to the Unity Editor's Window menu, allowing you to open the custom window.
  • ShowWindow(): This method is called when the menu item is clicked. It opens the custom editor window.
  • OnGUI(): This method is called to draw the window's GUI. It creates fields for the base name and start number, and a button to trigger the renaming process.
  • RenameGameObjects(): This method renames all selected game objects in the scene based on the provided base name and start number.

Step 3: Using the Custom Editor Window

To use the custom editor window, follow these steps:

  1. Open Unity and select the game objects you want to rename in the Hierarchy window.
  2. Go to Window > Batch Renamer to open the custom editor window.
  3. Enter a base name and start number in the fields provided.
  4. Click the Rename button. The selected game objects will be renamed accordingly.

Conclusion

By creating custom editor windows, you can significantly enhance your productivity in Unity. This simple batch renamer tool is just one example of how you can extend the Unity Editor to better suit your workflow. With editor scripting, the possibilities are endless, allowing you to create tools that cater specifically to your project's needs.