 Okay, so in this lecture, it's kind of a bonus lecture, but what I wanted to do was show you how you can easily create your own new screens and extend the functionality. So in this case, what we're going to do is create a screen that waits for a certain amount of time and then switches back to another screen. So it's really good if you want to create splash screen type stuff, where you want to have a whole chain of logos or something like that show. All right, so let's get this going and jump over into Unity. All right. So here's where we left off with the project. Okay, so what we want to do is create a new script. Actually, I'm going to create a new folder called the screen types, like so. And inside of this folder, I want to create another script. And this is going to be called IP-timed UI screen, oops, it's going to be timed UI screen, all right, because it has a certain amount of time. So all we need to do now, okay, is come into the script and get a few things set up. So what I'm going to do is put in the namespace. So it's ndpixel.ui, all right. And I want to do my usuals, okay, where we have our variables. So region variables, all right. And oops, I'm actually going to get rid of the start and update. I don't need those anymore, because I'm going to be extending this. So the last region I need is the helper methods, all right. And what I'm going to do is actually extend or inherit from the IP UI screen. So this new timed UI screen script inherits all this functionality. So it'll be like all this stuff exists in the script that has nothing in it. So let's say IP UI screen, awesome. So now what we want to do is we just really want to override, okay. So we want to extend the functionality of this start screen because we want to start a time, okay. So in order to do that, the first thing I need to do is put in the header. We'll say timed screen properties, okay. And we'll say public float m screen time. And we'll do something like two seconds, okay. And then I need another private variable called, and it's a float. It's going to be start time, okay. So that's what we start. Okay, so I'm going to copy that off. And what I want to do is I want to say public override this time, start screen. So I want to override the functionality. Because I have this base dot start screen in there, all right. I'm automatically executing the functionality in this particular start screen. In this instance of that script, okay. But now what I can do is I can add stuff to that functionality. Specifically just for this particular script. So I can say start time equals time dot time, like so. And then what I want to do is I want to start a coroutine. I want to start something that basically will wait for a certain amount of time and then fire an event, okay. So I need that coroutine first. So I need an I enumerator. And we're going to say wait for time, oops. Okay. And really all we need to do is just say yield, return, new, wait for seconds, okay. And it will be M screen time. And once we do that, we need to do something else. We actually need to fire an event. We need to say, hey, we completed our time. So in order to do that, I need to say unityengine.events for the names or for the using statement. And then I want to put in a new public event. So I want to say public unity event on time completed. Okay, so and then we'll initialize it to a new event. So once we pass in our enumerator right here, once we pass this yield statement and we've run out of time, I want to say if is not equal to null. So if on time completed has some listeners, we're going to say ontimecompleted.invoke. And that's where we'll put the switch. So we'll switch screens basically. So the last thing we need to do is say start coroutine. Like so, we'll say wait for time. Wait for time. There we go. Just like that. Awesome. All right, so let's go back and see what we made. Oops, we're not supposed to see that. All right, here we go. So what we want to do is to test this out, we just need to make a new screen. So I want to go UI panel and we're going to call this the wait screen just for now. All right, and what I'm going to do is plop the time screen on it, okay, awesome. And then I'm going to go to my animation. I'm going to create a new override so we can inherit all that animation. So in this case, what I want to do is just copy this name. All right, so I don't have to type in a whole bunch of stuff and we'll call this the wait screen override. Okay, and then we'll provide that base and then we'll give it all the animations, all of our base animations, like so. And then apply it to the animator on the wait screen. Okay, there we go. And now you'll notice that the screen itself actually has a new event. So we have some new properties here. So screen time is going to be two seconds and when this is done, we want to tell the UI group to, let's just say it switches to the login screen again. Okay, so awesome. Now we've set that functionality up. Okay, so all we need to do now really is just put in an image. All right, so let's put that image in. We'll just call this the BG and we'll make it like a light gray just so we can tell the difference and let's just put some text in here that's full screen as well. Okay, and let's just say wait screen just so we can test it. We don't really need this all in there, but I just want to make sure that we are in fact switching screens. Okay, or waiting. All right, perfect. There we go. All right, so now let's run this and see. Well, actually what we need to do, let's say when we hit the register button, we go to the wait screen. So we're gonna say on click, switch screens. Let's go to the wait screen. So what should happen is it should go to the wait screen and then loop back to the login screen if we have done our job correctly. So let's go to sign up and let's do the sign in button. We go to the wait screen and there we go. We'll go back to the login screen. So you can see how quickly you can set up UIs using the system, okay? So now I don't need that screen anymore. We can get rid of that. But now we have an extra screen type. So you can go and create more screen types as your projects need and then actually reuse all that code over and over again for other projects. All right, so that was the gist of that. Thanks so much.