 Hello, and welcome to another IndiePixel tutorial brought to you by indiepixel.com. My name is Kenny Lambers, and I will be your instructor throughout this course. So in this course, we are going to focus on creating reusable UI system. All right, so this is super, super valuable when you are constantly having to set up UIs over and over and over again. So the more games that you work on, the more apps you work on with Unity or whatever it is that you actually end up making with Unity 3D, you're always gonna need some sort of UI. So what we're gonna talk about in this course is how to set up a UI system, a set of scripts, basically that is reusable across all your projects. So what are we going to actually look at? What are we actually gonna do in this course? So the first thing we're gonna do is talk about the UI structure. So by UI structure, I mean how do we set up the game objects inside of Unity, inside of the user interface itself? This will start to set a consistency or a precedence, basically, of how you go about setting up all of your UIs for all of your future projects, okay? We're then going to stub in the scripts for the UI system. Now these scripts are highly reusable and I've used them on many, many projects. And what I'm about to show you is the results of working on countless Unity projects. And this system that I've developed and that I'm gonna show you works super well and it allows you to set up UI super quick, all right? So after that, we're gonna then fill in the logic. So after we stub in the scripts, we're gonna actually fill in all the logic for the UI system, okay? And then we are going to fill in the logic for the UI screens, all right? Because we're gonna basically divvy up the tasks between the UI system and the screens, all right? So UI system basically includes a bunch of screens, okay? And a screen then takes care of all the elements, all the UI elements for its particular screen. So we basically separate the current concerns between those two functionalities. Then we need to set up some screen animations and I like to use the animator for the UI because it makes it real easy to add new animations or to update animations really quick. But what I'm gonna do is I'm gonna show you how to create a basic animator with animations that you can reuse over and over and over again, all right? So we're gonna cover that. And then finally, I'm gonna show you how you can actually start to create new screen types with the UI screen class that we create, okay? And this is awesome because you'll be able to inherit functionality from the scripts that we create and create new screens without having to recode a whole UI system basically. So it's really, really powerful and it makes the coding of UIs super quick, all right? And then finally, we are gonna create a menu system that allows us to automate a little bit of the setup of a UI system, okay? So we're gonna look at ways in which we can just set up the UI structure, ways in which we add new screens, so on and so forth. There's a lot of things you could do, a lot of tools you could write, but in this particular course, we're gonna walk through a couple tools that will make your life a lot easier for the setup. So without further ado, let's take a look at the final result of what we're gonna make just so you get an idea of what you're gonna get by watching this course, okay? So let's flip over to Unity and take a look. All right, so let's take a look at what we're actually gonna build here in this particular course. So we're gonna learn how to set up a nice UI structure, all right, so where we have a UI system, and then we have screens. We're gonna learn how to set up animations for all these screens, all right? So if we're gonna go to this register screen, all right, so we've got these animations that we're gonna set up, all right? We're gonna learn how to use events. We're gonna learn how to automatically apply other components to our screens. We're gonna do a ton of stuff where we learn how to switch between screens. We're gonna set up automatic fading for our UI. So when you're done with this whole course, you're gonna have this very, very well-rounded concept of how to set up a reusable UI system, all right? You're also gonna get all the assets from this particular project, so you'll have the code. But I do highly recommend walking through the course so you get an understanding of how the code works so you can easily create your own types of screens and extend the code and make the system more robust. This is really just like that starting point, that utmost basic version of a UI system, okay? So this is what we're gonna make throughout this course. So let's get started.