Game development is a lengthy and highly complicated process that can take months of a developers life for even a small project, therefore any thing that helps improve the workflow and speedup the process is very welcome. Now while modern game engines try to cater to the needs of developers and make their lives easier, there is always space for improvement, especially given the specific needs of each project.
Luckily for users of the Unity3D game engine, there exists an easy to use and powerful editor API that allows the creation of basically anything you want in regards to working with the Unity editor UI, be it simple extensions or full-blown editor windows and custom tools that interact with your game.
The above editor tools are complex tools with completely different functionality and purpose, yet they were created using the exact same API. There is really no limit to what tools you can build using editor scripting, you can even rebuild the entire Unity editor and replace it with your own tools, if you so desire.
However, it is sadly the case that a lot of Unity users don’t actually use the editor tools to their full potential, if at all. One of the main reasons that contribute to this problem is the perceived complexity of the editor API and the friction of starting out, as there exists a rather large number of different classes to inherit from, special methods to override, editor specific technicalities and even an entire UnityEditor namespace, which can be quite daunting without proper guidance.
Therefore, it seems useful to have a series of posts that Unity users can hopefully use to hit the ground running with editor scripting in Unity and start creating useful tools to improve their development experience, while simultaneously providing the required knowledge for proper use of the editor API without making it too overwhelming.
To keep things as practical as possible, every concept and part of the editor API we will look at will be explained while actually using it in a proper example. That is to say, if editor windows are being discussed, we will be creating an editor window for a certain purpose and explain things as we go.
This way of doing things will hopefully make it easier to understand how the editor works and provide something that can be built upon quickly until the developer gets to know how to use the editor API better. The more you learn about editor scripting the more you come to realize just how powerful it is and how much it can be used to improve the game development process.