Console Programming | Project Exploration
For my Console Programming class during my final semester at Champlain College, I plan to create a Unity tool that will allow users to either create a new class with a custom inspector at the ready or to create a custom inspector for a preexisting class. At the end of the semester, I plan to make this tool available for free on the Unity Asset Store.
As an example of a custom inspector window, here is one that I created for a personal project I worked on briefly during the Summer of 2019:
This image displays part of a basic enemy AI script for a turn-based RPG, which features a variety of public variables users can easily mess around with. These include the ability's name, the ability itself (selected from a dropdown menu), the range an enemy's health has to be within to use it, and its priority in comparison to an enemy's other abilities.
In this example, the most important section of the code is the "Other Conditions" area near the bottom of the picture. The Condition [X] variables are all enums, allowing users to easily change them via a dropdown menu.
Changing Condition 1's value from "None" to "Turn Count" causes several new variables to appear between it and Condition 2. These variables technically always exist, but they are only relevant if a user has checked "Turn Count" on any of the ability's Condition [X] variables. Otherwise, no code ever checks their values, so having them always be visible in the inspector window is cumbersome and awkward. This is especially true since "Turn Count" is only one of five possible conditions, and the others could each have just as many - if not more - unique variables attached to them.
Because of this, custom inspector windows are incredibly useful. It certainly makes it easier to work in Unity, especially if one script features many variables that designers need to constantly tweak over a project's lifespan. The issue is that creating custom inspectors takes time; one must create the necessary variables, make an editor script to change the inspector's appearance, and then check the inspector to make sure it came out correctly. This can prove arduous, tedious, and frustrating. As such, I would like to create a Unity tool to help make custom inspectors without requiring any programming whatsoever, which should help alleviate this issue.
As a Technical Designer, designing and programming a custom tool in Unity will give me an excellent project to put on my portfolio. Additionally, while I have a personal interest in tools programming, I have only worked on a couple tools during my time at Champlain College. These tools are generally incomplete or only work for niche scenarios (such as loading in data from a .css file for level creation), so I have not released any of them for contemporary use. Creating and releasing this tool will thus prove invaluable for me, since it will both provide me with more programming experience and let me publish a project on the Unity Asset Store.
Fortunately, I do have some experience making Unity tools, so setting up the initial code and making an inspector window appear should not be a problem. Additionally, the only program I require to complete this project is Unity itself. This should make the production aspect fairly painless, since I can work on this tool from my home or from nearly any lab computer at Champlain College. The only external factor that may prove risky is the process of uploading this tool to the Unity Asset Store, since Unity's website states the team may take up to 14 business days to review a product before approving it. To circumvent this issue, I will try to complete the project one or two weeks before the end of the semester, if possible.
That said, there are some things that I must address before I start working on this tool. First, while I have experience creating objects via code, I do not know how to create an entirely new script. If I cannot find a good way to do this, I may simply have the custom tool output the code as text (either directly in the editor window or as an external file), which users can then paste into a preexisting script at their leisure. Second, I will have to make sure that the tool is easy to understand and use, since otherwise, users may find it intimidating and not wish to touch it at all. To do this, I plan to spend a good chunk of time this semester testing it with members of various game disciplines, especially other designers. I will not need to test it with specific people (and in fact will benefit from testing it with many different people), and I do not consider this a major external factor for that reason. Third and finally, I have never uploaded anything to the Unity Asset Store, which may cause some difficulty or confusion near the end of the semester. I have already done some research into this process, so this hopefully will not be a problem.
Even when considering these factors, I should definitely have enough time to finish making and uploading this custom tool to the Unity Asset Store before the end of this semester. In fact, I am very excited to begin working on this, since it will give me another excellent project for my portfolio and a fun bit of extra work in Unity alongside my other projects this semester.