Gum Forms is a set of classes which provide fully-functional forms controls which you can use in your game. Examples of forms controls include:
Button
Checkbox
ListBox
TextBox
Slider
Gum Forms can be used purely in code (no .gumx project required), or you can fully style your forms objects in a Gum project.
Quick Setup
The easiest way to add Forms to your project is to use the FormsUtilities class. Keep in mind that Forms is not a replacement for Gum; rather, it adds objects on top of Gum which provide common UI interaction. In other words, if you are using Forms, you are still using Gum as well. Therefore, when using Forms you must also initialize Gum.
The following code snippet shows how to initialize Forms and Gum, and how to add a single Button to your project:
publicclassGame1:Game{privateGraphicsDeviceManager _graphics; // Gum renders and updates using a hierarchy. At least // one object must have its AddToManagers method called. // If not loading from-file, then the easiest way to do this // is to create a ContainerRuntime and add it to the managers.ContainerRuntime Root;publicGame1() { _graphics =newGraphicsDeviceManager(this);Content.RootDirectory="Content"; IsMouseVisible =true; }protectedoverridevoidInitialize() {SystemManagers.Default=newSystemManagers(); SystemManagers.Default.Initialize(_graphics.GraphicsDevice, fullInstantiation:true);FormsUtilities.InitializeDefaults(); Root =newContainerRuntime();Root.Width=0;Root.Height=0;Root.WidthUnits=Gum.DataTypes.DimensionUnitType.RelativeToContainer;Root.HeightUnits=Gum.DataTypes.DimensionUnitType.RelativeToContainer;Root.AddToManagers();var button =newButton();Root.Children.Add(button.Visual);button.X=50;button.Y=50;button.Width=100;button.Height=50;button.Text="Hello MonoGame!";int clickCount =0;button.Click+= (_, _) => { clickCount++;button.Text=$"Clicked {clickCount} times"; }; base.Initialize(); }protectedoverridevoidUpdate(GameTime gameTime) {if(IsActive) {FormsUtilities.Update(gameTime, Root); }SystemManagers.Default.Activity(gameTime.TotalGameTime.TotalSeconds); base.Update(gameTime); }protectedoverridevoidDraw(GameTime gameTime) {GraphicsDevice.Clear(Color.CornflowerBlue);SystemManagers.Default.Draw(); base.Draw(gameTime); }}
The code above produces a single button which can be clicked to increment the click count.