Multiple Screens
Last updated
Was this helpful?
Last updated
Was this helpful?
A full project may include multiple screens such as a TitleScreen, LevelSelectScreen, and even GameScreen which might include a HUD or PauseMenu.
This tutorial introduces how to work with multiple Gum screens. For this tutorial we will focus on two new Screens: Screen1 and Screen2. It's okay if your project has more screens, but we'll be using just these two for this tutorial.
Before we write any code, we'll create two screens. As mentioned above, a full game might have many screens. For this tutorial we'll create two simple screens, each with a single button and a label.
First we'll create Screen1:
Right-click on the Screens folder to add a new screen named Screen1
Drag+drop a Components/Controls/Label component into Screen1
Set the Text property on the newly created LabelInstance to Screen 1 so that you can tell that you are on Screen1 when running your game
Drag+drop a ButtonStandard component into Screen1
Set the Text property on the newly created ButtonStandardInstance to Go to Screen 2
Arrange the two instances so they are not overlapping
Next we'll create Screen2:
Add a new Screen named Screen2
Drag+drop a Component/Controls/Label into Screen2
Set the Text property on the newly created LabelInstance to Screen 2 so that you can tell that you are in Screen2 when running your game
Drag+drop a ButtonStandard component into Screen2
Set the Text property on the newly created ButtonStandardInstance to Go to Screen 1
Arrange the two instances so they are not overlapping
Next we'll modify our Game class so it loads Screen1.
Make sure you have already setup code generation for your project. You can verify that it is set up correctly by selecting one of your screens. You should see the Code tab appear, and it should reference your .csproj location.
You can also click the Generate Code button on each screen file to make sure that code has been properly generated.
By generating code for both screens, you can access each screen as a strongly-typed class in your project: Screen1
and Screen2
.
You can load Screen1 by adding the following code to your Game class.
When we generated our screens earlier, Gum created code files for each, including a custom code file where we can add our own code.
We can modify Screen1.cs and Screen2.cs to include code to move from one screen to the other.
Add a Click handler to our button which removes the existing screen and creates the new screen so your two screens look like the code shown in the following blocks.
Each screen clears the root (removes the previous screen) when its button is clicked, then creates and adds the next screen to the root.
This tutorial assumes that a Gum screen is always displayed.
Games can also completely remove Gum screens altogether. To do this, do not create a new screen after calling GumService.Default.Root.Clear();
This tutorial showed how to switch between two screens by removing the old screen and creating a new screen. Although this is a simple example, the same concepts could be applied to a full game to switch between multiple screens.