Game development requires the involvement of many different types of disciplines and people to complete. Often times the Game engine or software used to make the game, is very technical making it difficult for some disciplines to work efficiently in. This is where the creation of artist / designer tools come into play. As a unity developer, learning how to create Visual Editor Tools for artists and designers is crucial to the productivity of your game development production.
This course will guide you through the process of developing your first visual node based editor that can be used for any sort of game development task. It will give you the underlying knowledge of saving out your nodes data, giving the user the ability to connect nodes, create nodes, and delete nodes. By the end of this course you will have a fully functional node based editor that you can extend to meet the needs of your game development project.
In this first lecture we are simply going to walk through the final Node Based Editor that we are going to create!
With our new Unity project set up, we will now start the coding process by creating all the scripts we will need. By the end of this lesson we will have each empty script ready for us to fill in with our actual code.
The first step in our Node Based editor development, is to get the editor window, where the user will interact with nodes, drawing so we can further develop the different views that we will need.
This lesson will focus on creating a more flexible view system through the process of class inheritance. We will develop a base class that all editor views will have, then extend that base class to include only the specific functions that each view will have to do. This will give us the flexibility to create many different types of views, and remove the process of duplicating code.
With our view system coded and our class structures working, let's now get our views to actually draw some GUI in the Editor Window.
In order for users to interact with the editor, we will need to read in input events from the mouse and keyboard. By the end of this course we will have working input events we can use to develop rich user interaction.
With the meat of our editor up and running, let's start to lay in the foundation to style the editor GUI, so we can really customize the look of our Node Based tool.
Now that we have our Editor window and views drawing, let's get our data structure up and running. We will need this data structure to save and house all the nodes data so we never lose our graphs that we create in the Node Editor.
Understanding how to work with Scriptable objects and the Asset Database, we will be able to serialize all our graph and node data. This lesson will walk you through the steps necessary to get your data created and saved between user sessions. By the end, you will have working graphs ready to have nodes added to them.
Giving artists and designers the ability to work quickly is key to an efficient pipeline. The use of context menus allows users to quickly access graph and node functionality from the right mouse button. Ultimately this allows anyone to the ability to create new nodes and graphs without having to navigate to a menu.
With context menus we can perform all sorts of operations that allow users to quickly get work done. This lesson will walk you through how to Load and Un-Load a graph from the database.
This lesson will now take us through the process of adding new nodes to our graph data. We will learn how to utilize the Asset Database to add sub-objects to our graph asset.
Now that we are able to add nodes to our graph, as a data representation, let's learn how we can get our nodes to draw in the Editor Window.
When developing a node based editor, we have to make sure we are keeping track of which node is selected, which node we are editing and whether or not we are in a node connection mode. By the end of this lesson, we will be able to select nodes, edit them, giving us a nice framework to manage our nodes.
No node editor would be complete without inputs and outputs. Throughout this lesson we are going to look at how we construct inputs and outputs on our nodes, so that we can begin to connect them together.
Now the real fun comes into play. We have all these great nodes drawing in our Editor Window, we can move them around, select them, and deselect them. So let's learn how we set up our code to allow user to connect nodes together.
This lesson will finalize the nodes system, by showing you how to delete nodes, and show their properties in the property view, completing the Node editor in general.
In the second part of the completing Nodes lecture we are going to cover how to take the information in the nodes themselves and display them in the properties window.
Any good node based editor has a larger space to work with the nodes, and also has a nice grid background to fill in the space. Throughout this lesson we will create a way in which we can pan the graph view, as well as draw a grid in the background.
In our final lesson of the Node Based Editor course, we will review what we have learned and talk about where to go next with your Unity tools programming adventures!
Gametutor teaches the latest in game development and technical art for Unity 3D, Houdini 14, Houdini Engine, C#, and Substance Designer. Gametutor has been teaching industry professionals, online, for over a year and a half, and continues to push the boundaries of game development education.
Noah Kaarbo (Co-Creator / Designer / Entrepreneur), has worked in the Game Industry for over 14 years. He has helped ship over 20 AAA titles, ranging from Halo Reach to countless Forza, Call of Duty, and infamous franchises. He is proud to be contributing his skill sets to Gametutor.
Kenny Lammers (Co-Creator / Instructor / Programmer / Technical Artist) has worked in the Game Industry for over 14 years, for large game companies such as Microsoft Games Studios, Activision Blizzard, Surreal Software, Eline Media and Amazon. He has a deep knowledge of C# programming, Shader Development for Games, General Technical Art Techniques, Modeling, Texturing, and Teaching. He has taught course online, for Digipen, and for the University of Washington.
Our Goal with Gametutor is to bring the highest quality Technical Art and Programming training, to the masses, and show how awesome game development can be!