There's a ton of different reasons that you're going to quit your game. One of the main reasons is your project is going to become a massive bloated mess. And I'm on my third commercial release. It's called Twisted Tower. It's actually published by a big publisher. It's called 3D Realms. And even my projects after all these years of making games, this project is a freaking mess. If you open up like the character controller in the inspector, it's just a mess of unorganized variables. And honestly looking looking at this script after, you know, 5 years of it becoming a cluttered mess. I look at it and I don't even know what's going on. And I decided it was time to do something about this. I'm going to use this tool called Odin Inspector. Odin Inspector is incredible. My mind was blown honestly at how easy it was to use and how quick it was to learn. The cool part about Odin Inspector is it helps you clean up all of your scripts as they appear in the inspector. Weirdly enough, the inspector doesn't even look like the inspector anymore. for one of my scripts I'm going to show you in a sec. It looks like a widget. Look, I don't want you to quit your games either. I want your Unity projects to be clean and to make sense.
And I want you to enjoy being inside of your Unity project. And also, I want your team, if you have a team or you're working with somebody in your game, I want them to understand what your scripts are doing, what is going on inside of Unity. And by the way, what I'm going to show you when cleaning up my inspectors is this is the tip of the iceberg, right? What I'm showing you is the stuff that I learned in like 10 minutes. There's over 130 attributes that Odin Inspector has to offer. I mean, you can create entire workflows for solo developers, but also for entire large game development teams. So, let's jump inside of Unity and use Odin Inspector to make my character controller look beautiful and to make sense and to give me some sanity and help me finish my third game, Twisted Tower. And by the way, this video is sponsored by Odin Inspector. They actually reached out recently, a friend of mine, he's working there now. He was like, "Hey, Odin wants to sponsor a video. They want you to show off our brand new update to Odin's Visual Designer, and they said in exchange they would support Twisted Towers development," which is awesome. Thank
you, Odin. And there is a link below, guys, for a 90-day trial. And then there's also a 20% off discount for you guys. So, the link is below. But anyway, let's jump inside of Unity and take a look at how beautiful we can make this messy project look inside of Unity. Let's go. All right, one of the scripts that's been bugging me for the last 5 years honestly of working on my game Twisted Tower is this player controller script. And by the way, this is one of the biggest scripts in the game. And it's the one that I use the most. And also, I'll be honest, a lot of the elements in this script could probably be broken down into multiple scripts. It does a lot more than just well handle the player controller. That said, I kind of prefer scripts that are dense if I'm being honest. I don't know why, but I do. I like them to do a lot of different things, but what I don't like is how messy they are, especially this one. Now, as you can see, I do have some headers here, like abilities, gameplay, flags, player systems, but they're being pulled from the script itself, and they're not really helping, if I'm being completely honest. So, what we're going
to do is we're going to use Odin Visual Designer to make this look gorgeous. We're going to talk about the lowhanging fruit here. These are going to be the things that have the biggest bang for your buck to make your inspector look beautiful. So, in order to open up Odin Visual Designer for your script, you can just rightclick on it and go to Odin Customize in Visual Designer. All right. So, as you can see here, I have all of my different variables here sort of just stacked on top of each other. And if I want to, I can rearrange them, right? Do all sorts of crazy stuff with them. And the cool thing here is that this is not actually changing my script. This is just changing how the inspector looks. To prove it to you, I can go to tools Odin inspector and designer files overview. And you can see here we have this new file that's been created. And this is my OVDF file. This is just a file that's basically changing the way the inspector looks. And if I want to, I can open up this file and remove any additional information that's being
added to it. But we're not going to do that right now. I'm just trying to let you know that it's not actually changing things in your script. The first thing I want to show you is using tabs to organize various variables. So, what I want to do is try and put all of our abilities here into a nice tabbed group. Okay, you can see I have a bunch of well cool abilities the player can do like if they have the dash ability, they have the slide ability, double jump, sprint, but there's also well items that are also included in the abilities like flashlight map and grenades. I feel like this is a little confusing, so we're going to go ahead just put it into a tabbed group. So, we're just going to go down here and click the plus icon and we're going to type in tab and select tab group. I'm going to drag this all the way to the top here. Put it right there. I'm going to make sure I name it properly. I'm going to call this abilities and items. And I think that's fine. I'm just going to click press enter here and close it. Next, what I want to do is create a new tab. Right? We've have we have the group here, but we need a tab. So, the first
tab we're going to call abilities. I'm going to press enter here. And you can see now we have abilities here. And then I'm also going to create a new tab. I'm going to call this items. And I'm just going to drag in all of my different abilities here. But I'm going to drag my flashlight into my items and my grenades and my map. So already you can see why this is so valuable. I have an items tab here and an abilities tab here. We're reducing vertical clutter in our inspector and we're also making it more readable and intuitive. Now you'll notice we have a header here. Most of you probably have scripts where you're using headers or tool tips. And again, they're built into your scripts, right? We can go ahead and just remove those by locating the has dash ability. And you can see this little one here. If you select this, you could actually just remove the header. Again, this information is being pulled from the script itself. And I can go ahead and just remove that attribute. And now you can see there's no header here. That's making it more cluttered. And we're going to have to probably do that for a lot of our headers here that are showing
up in bold. We can also go into our script if we want to and just remove them there. Now, if I want to, I can actually add icons and colors to my tabs. I think I'm going to do that. I'm going to go ahead and edit my tab here. And I'm going to go ahead and create a new icon here. These arrows kind of look like abilities. I don't know. So, I'm going to click that. You can pick whatever you want. And I can type in my color. Now, if I type in magenta, it'll automatically find the magenta color. But if you're not sure what color you want to use, you can actually just type in random letters here, and it'll show you the different colors you can choose. Okay. Okay, so for abilities, I actually really like cyan. And then for items, let's use a box icon of some kind. Let's see if we can find a box. I feel like that kind of looks like an item. So, let's go ahead and use that cube. And I'm going to use green for this. So, now you can see we have abilities and can items in green. It's already feeling really, really professional. And I'm feeling a kind of sense of relief uh as I'm adding these slowly. Now, let's quickly do another tab group for well
elements down here that are related to my player movement, right? Basic movement, jumping, climbing, stamina system. This is a mess. Honestly, I don't need to see all of this stuff. So, what I'm going to do is create a new tab group and put it right underneath this tab group so that it's nice and clean, but also not shown in vertical space at all times. All right, we've got all of our different abilities categorized in these tabs already, and it's feeling amazing. But you'll notice that it's kind of in a weird spot, right? All these different variables, I feel like they're just kind of randomly placed in our inspector. I want those near here as well. So, I'm going to go ahead and just drag this movement tab group all the way to the top here. So, these are all the different variables associated with my player controllers movement. But, you're still going to notice here that there's a lot of random variables here. A lot of these variables feel like they don't really have a group or a category. So, I'm going to use something called a box group to sort of just box in various
elements, various variables, so that they're nice and cleanly organized so it's easier to understand what these variables all do. So, I'm going to go ahead and click the plus icon here, type in box group, add that, and I'm going to drag this all the way to my jumping tab. There we go. All right. I'm going to call this one jumping states. So, I'm going to drag in all of the things related to states for these variables. I want to be able to see whether they're true or false in play mode. That's kind of why they're here. But I don't want the developer to be able to click them in editor mode and change them. So I can actually click this icon here, this modify attributes. And I can click add attributes and type in disable, and I can disable it in editor mode. I also want that to be true for is jumping as well. These cannot be changed now, but I can still see them, which is awesome. Okay, let's go ahead and add another box group. And I'm just going to call this one something generic like settings here. And I'm just going to drag all of my different float values associated with this. So now we have this category
here which are all the values that we want the developer to change when it comes to jumping. And then we have these values here that are in a way kind of like readonly values. So what I can do here is I can actually just go ahead and change this. I can make sure that it's actually displayed, right? I can say show label here. So here's all our beautiful settings here. I can center the label if I want. Oo, that looks really pretty. I like that. That's about it for that one. Now, if I really, really want to, I can actually even separate out these values as well and make it more granular. So, I can nest a tabulated group like this. I could drag all the way to the jumping tab here, bring it into our settings section, and I can call this jumping tabs. And now we can create a new tab inside of this. We're going to call this one jumping. We're gonna create another one falling. So, as you can see here, now we have tabs nested within the jumping tab. And again, if I wanted to, I can add icons here.
Now, there's one big problem here, and that is that yes, we have these beautiful tabs here, but you'll notice it's getting a little bit dense. I don't really know what the difference between these tabs are versus these tabs. It's starting to get confusing, and that's where we're going to use a big header for these groups. So, what I'm going to do is I'm going to create a nice big title group that I'm going to use to separate out these various tabbed groups. And this is going to be called movement. And all I'm going to do now is drag in this movement tab group here. And now you can see we have this nice, beautiful title here. But we could take this a step further. The truth is um that I don't need to see all of these all the time. Uh, I don't even need to see this section here all the time. So, believe it or not, I can just create something called a fold out that will close all of this so that I don't have to see it until I really need to jump in and make some changes. So, I'm going to go ahead and create a new foldout group.
And I'm going to bring in this collected abilities and items. There we go. I can now close this. And I can name it so it has a nice label. I'm going to call this collected abilities and items. So now I have this beautiful little fold out here called collected abilities and items. And I could drop it down. And there we go. Now what I could do here is I could remove this title because this kind of already acts as a title. Or well I could just drag this out here, right? And then I could bring in the foldout inside of the title and then drag in the tab group. So now I have this nice title here with a foldout. Truthfully, I think what's going to help me the most is I think I'm going to have one big title and then I'm just going to have two drop downs. I think that's more helpful. All right, beautiful. Look at that. So, now my script is like half the height, right? And it's all nested inside of these foldouts. Now, we've done a really good job organizing all of the different
variables and states into uh nice tabs and categories and sections with titles, but sometimes you want to get even more granular. One attribute that I can add here is something called an info box. And this info box can well be information about a variable. It can also be information about an entire group if you want it to. So I'm just going to add an info box. And this info box is just going to give me information about the jumping tab in general. I could say the following variables are associated with jumping and being grounded. We could change it to a warning or an error. I I'm fine with it just being info or honestly even none. Right? So, it just gives us a little a little hint here to explain something. I think that's great. So, I'm going to close that out. Another attribute that might be very helpful for us is well, what's called a unit attribute. For example, jump speed underwater. What is that? What does that even mean? Right? Is it in seconds? Is
it in meters? Is it feet? Is it I don't know what it is. Right? So, I'm going to right click on this and go to edit attribute. Or you could click this little pencil icon here. Let's go ahead and click add attribute. And I'm going to type in unit. And there's a cool drop down here of all the different units we could choose. I'm going to choose unity meters/s. Same from this drop down as well. And so now you can see that it's 6 m/s. This is super duper important if you're working with a team for them to better understand what speed actually is. So, you'll notice that I've misspelled can double jump here. I've actually added a D. I don't know why I did that. Believe it or not, if you're maybe in the middle of a project or you're about to ship like a beta version of your product and you don't want to go in and change variables in your script, I can actually just change this without changing the script. So, I can right click on this, go to visual designer, go to edit attributes, and I can type in label text. There we go. Let's add this
attribute. And I can change what shows up, right? Can double jump. Awesome. That looks great. Now, you can actually change the color of your variables as well with the labels attribute. And for some things, you might want to do, you know, a change of color, right? Maybe want to change this whole fields color to be something like blue to indicate that it's underwater. I don't know. So, let's go to edit attributes here and let's change the guey color. I can just simply change this to a blue color. So now we have jump speed underwater and it's blue. Now something really cool I wanted to show you is this thing called property range. I love this attribute. It's a little bit different than the default range attribute which you can just add to your scripts by default in Unity. And FYI, the the range attribute, the default range attribute in Unity is basically just a slider. Okay, with Odin, we can create a slider that actually has values that are dependent on other values in your inspector. So, for example, I might not want walk speed
to be able to be higher than sprint speed. That doesn't make any sense, right? And if I had a team member working with me and this team member wasn't uh very smart and they decided to make the walk speed higher than the sprint speed, I could actually sort of force that, right? I can make it impossible with this property range attribute. So I'm going to go ahead and right click on walk speed, go to visual designer, go to edit attributes, and I'm going to add the property range. And in this case, I can say the min getter is nothing. I don't care what the min getter is, but the max getter is going to be the sprint speed variable. So now I have a slider here that maxes out at 20. I cannot go higher than the sprint speed. If I make the sprint speed 40, then now I can drag it up higher here. So, this is really helpful because, you know, if I set the sprint speed to 20, I might want to actually just drag my walk speed up to be closer to 20. So, this is just a nice visual tool as well. Um, it helps us know how close we are to the maximum sprint speed. Now, there's two
bonus things about Odin Visual Designer that I wanted to show you. One of them is this thing called the inline editor. This is great for things like uh, you know, references to scriptable objects or other scripts. For example, this balancing manager. This is a scriptable object and it's how I balance the game in Twisted Tower. But this is just a reference in the inspector. But you notice that I can't make changes to this balancing manager inside of this inspector. I'm going to have to go to the actual scriptable object and change it there, leaving my player controller script, which is kind of frustrating. I know a lot of developers might want to quickly make changes to scriptable objects, for example, from within another inspector. So, what I could do is actually go to edit attributes here. I'm going to click on add attribute and I'm going to type in inline editor. I'm going to go ahead and close this out here. And you'll notice now if I collapse this down, wow, I can actually see all of the variables that can be changed inside of
this scriptable object. This is crazy because it looks like it appears that all of these variables are actually inside of my player controller script, but that's that's not true, right? This is just a reference here to another scriptable object. But Odin knows that a lot of developers want to make changes really really quickly to referenced scriptable objects. All right, one final thing here that blew my mind. This is another bonus element I wanted to share with you. Buttons. This is certainly last but definitely not least because I know a ton of developers love to use these buttons. Believe it or not, if we scroll through all of our variables here, you'll notice that we don't see any methods or functions inside of the Odin visual designer. But if I click this eye icon, I can actually see all of the different functions that get fired in my player controller, like apply vertical force. That's a method or a function. I also have this one called kill player. And this one might actually be really cool to be able to turn into a button so that developers in play mode
can quickly kill the player just for testing purposes. So I can actually go ahead and add an attribute and simply add the button and let's see if we can find it here. There it is. We have the kill player button showing up in my inspector. And let's just go ahead and make it a little bit bigger. You know, something like 50. Nice and chunky. Let's go ahead and give it an icon, right? Maybe a skull. Do we have a skull? No. Do we have an X? Yeah, there's an X. It's a little high. Let's Let's do like that. I'm gonna go ahead and just move this up to the top. Okay, we have a nice big button here that says kill player. Uh, but the truth is though, I don't really need this to be shown at all times, especially when I'm not in play mode, right? So, we're going to go ahead and add an attribute. We're going to call it disable in editor mode. There we go. And that's about it. Now, sometimes in your game, you're going to have variables uh that they're not really relevant if you don't have a variable that's true. What I mean here is like if I have a variable called has grenades, but it's set to false, well, I
don't really want to be able to set the variables related to grenades, right? I don't even want to see them. So, I want to make all of these settings disappear or become invisible if has grenades is false. This seems complicated, but it's incredibly easy. All we're going to do is click this little icon here. We're going to edit the group. And I'm going to say hide. And where it says visible if here, I'm just going to type in has grenades. It's the same variable as above here. And so you can see here that if has grenades is true, we see all of our grenade settings. Otherwise, it's hidden. I think that's awesome, honestly. All right. I wanted to finally give you one extra extra bonus attribute that is honestly probably going to be the most helpful attribute in your game. I have this player SFX script and you can see here that it's basically just a giant library of different sounds that will play with different player abilities and movements, right? I've got, you know, the flashlight drained sound. I've got the save confirmation sound. It's just a bunch of global
sounds I use in my game. Now, if I wanted to look through these sounds with my eyeballs and find certain sounds, it's going to be a pain in the butt. Now, obviously, I can alphabetize them. Or even better, if I right click on the script itself and go to Odin Customize in Visual Designer, I can actually rightclick on this the actual script, go to edit attributes, and I can type in this special attribute called searchable. Now, if you don't see the searchable appearing here, you might see it here, right? But if you don't see it here, you might need to close Unity and reopen Unity. And if we reopen Unity here, you can see that the searchable is now showing up in the inspector and I can search for whatever I want. Maybe I want to find some pause sounds. Oh my goodness, we've got a play pause sound right there. Or maybe an enemy sound. Oh, look at all of our enemy sounds. This is crucial. Honestly, I don't see why you wouldn't add this to all of your scripts. Just makes searching for variables so much easier. All right, I'm
going to go ahead and just clean up my script. I'm going to do a time lapse here for you and I'm going to show you the final result in three, two, one. Oh, look how clean this is. So, what do you think about my new player controller inside of the inspector? It's pretty beautiful, right? The thing is this is just the tip of the iceberg. There is so much more that Odin Inspector can do to well, not only clean up your inspector, but make it more usable, make it more functional. There's actually 130 plus attributes you can add to your inspector, ultimately leading to full pipelines and workflows for solo developers and also large teams making a game in Unity. And just remember, I highly recommend you at least check out Odin below with the 90-day free trial. And if you like it, you get 20% off and it's just for you guys. This is a massively good deal. I know I'll be using Odin Inspector for my current project and also definitely for my next project. And again, huge thanks to Odin for supporting my indie game, Twisted Tower. And by the way, if you want to
clean up all of those nasty errors in Unity, in addition to just cleaning up your inspectors, there's this thing called Odin Validator. It can find and fix errors and bugs in your console and in your project by simply scanning your project in real time and allowing a bulk fixing of errors with the click of a button. They honestly have a lot of really cool tools to offer. And they told me they're also working on this brand new UI library called Pangui. I'm really excited to take a look at this when it's out. Thanks for watching, guys.
Auto-generated captions from YouTube — names and numbers may be misheard.
Thomas Brush · 2026
Jonas Tyroller · 2025
Comments