How to make a roblox main menu

10 min

This article expands on the articles/Using Images in GUIs|Using Images in GUIs tutorial and demonstrates how to make on-screen buttons that can be used for menus, in-game actions, and much more.

Button Types

Text Button

A TextButton is very similar to a TextLabel, except that a player can activate it with a click/tap. Internally, it also shares many of the same visual properties as a text label — font, background color, stroke color, etc.

How to make a roblox main menu

Image Button

Similarly, an ImageButton is like an interactive version of the ImageLabel object and it uses a custom image that you upload to Roblox. It also shares most of the same properties as its non-button counterpart.

How to make a roblox main menu

Creating a Button

The remainder of this article demonstrates how to add an ImageButton to the screen and flip it between three appearances depending on the player’s interaction.

Add an ImageButton

  1. In the Explorer window, hover over the StarterGui object, click on the circle
    How to make a roblox main menu
    button, and insert a ScreenGui object.
  2. Select the new ScreenGui object and, in a similar manner, insert an ImageButton.
How to make a roblox main menu

This will add an empty image button to the corner of the game view.

How to make a roblox main menu

Upload Images

This button needs three custom images — its normal appearance on the screen, a hover-over appearance, and a final image for when the player presses it.

How to make a roblox main menu
ImgButtonNormal

How to make a roblox main menu
ImgButtonHover

How to make a roblox main menu
ImgButtonPressed

You can use these menu buttons for testing — simply right-click each one and select Save Image As... to save them to a convenient location on your computer.

Instead of uploading each image separately, use the Asset Manager to upload multiple assets at once:

  1. If it’s not already open, click Asset Manager from the View tab.
How to make a roblox main menu
  1. Click the Import button near the top of the window.
How to make a roblox main menu
  1. Find the three images on your computer, select them, and confirm that you’d like to upload them.
  2. When finished uploading, double-click the Images folder or select Images from the “tree view” menu.

How to make a roblox main menu

How to make a roblox main menu

Inside the folder, you should see the new images:

How to make a roblox main menu

Setting the three appearances for the button can be done through the ImageButton object.

  1. In the Explorer window, select the new ImageButton object.
How to make a roblox main menu
  1. In the Properties window, click on the Image property and select the ImgButtonNormal asset.
How to make a roblox main menu
  1. Click on the HoverImage property and select the ImgButtonHover asset.
How to make a roblox main menu
  1. Click on the PressedImage property and select the ImgButtonPressed asset.
How to make a roblox main menu

Adjust the Button

To finalize the button’s appearance on screen, make the following adjustments:

  1. In the Properties window, set BackgroundTransparency to a value of 1 to make the background transparent.
How to make a roblox main menu
  1. Move the button slightly away from the corner by setting both PositionXOffset and PositionYOffset to around 50.
How to make a roblox main menu

Attach a LocalScript

The final task is hooking up basic button functionality.

  1. In the Explorer window, hover over the ImageButton object, click the
    How to make a roblox main menu
    button, and insert a LocalScript. This will create a new LocalScript and show it.
How to make a roblox main menu
  1. In the script, copy and paste in these new lines:

This is a basic button script and it works as follows:

  • The first line sets a variable button which tells the script what specific object it’s linked to. In this case it’s linked to the ImageButton, the parent of the script.

  • The onButtonActivated() function is the primary handler for the button’s activation. Inside it, you should perform the intended action like opening the game’s main menu.

  • The final line connects the button to the onButtonActivated() function with the GuiButton/Activated|Activated event. This will cause the function to run every time a player activates the button in game.

Although there are several different event types which you can connect to buttons, the GuiButton/Activated|Activated event is the most reliable for basic buttons, providing standard button behavior on all platforms from PC to phone/tablet to console.

If the button doesn’t work as expected, check the following:

  • Make sure you used a client-side LocalScript, not a server-side Script.
  • Ensure that the LocalScript is a direct child of the ImageButton object (not the top-level ScreenGui parent).
  • Confirm that your ImageButton object's Image, HoverImage, and PressedImage properties are set to the appropriate image assets.


Tags:

How to make a roblox main menu
Hexaria title screen (used with permission of Biostream)

A GUI, which stands for Graphical User Interface, is used to display information about the game to the player. GUIs can be used to show the player what their character’s level, health, and gold are, and also to create in-game buttons for menus and inventory systems. In the image below, the game developers of Hexaria use GUIs to both show information about the player and to create an in-game menu.

How GUIs Get Into a Game

The most common type of GUI is a screen GUI which behaves like a 2D place to put stickers on the player’s screen. When the player moves the camera or explores the game world, a screen GUI stays in the same place (on the screen).

When you make a new Roblox game, this screen GUI space doesn’t exist — it’s your job to add it. The easiest way is to add it to the StarterGui service so that it gets copied to a player’s local game session when they join the game.

  1. In the Explorer window, find the StarterGui object.
How to make a roblox main menu
  1. Hover over it and click on the circle ⊕ button.
How to make a roblox main menu
  1. Locate ScreenGui in the popup menu and select it. This will create a new 2D screen space in front of your 3D game world.
How to make a roblox main menu

Adding Items to a Screen GUI

Currently the new screen GUI is empty — it’s just a blank canvas that spans the entire width and height of the player’s screen.

Add a Text Label

All sorts of things can be added to the screen GUI. Let’s start with a basic text label.

  1. In the Explorer window, hover over the new ScreenGui object, a child of StarterGui, and click on its circle ⊕ button.
How to make a roblox main menu
  1. Find TextLabel in the popup menu and select it. Note that an object can be found more easily by typing the first few letters of its name into the “Search object” input field.
How to make a roblox main menu

This will add a very basic text label to the top-left corner of the game view.

How to make a roblox main menu

These steps created the new text label as a child of ScreenGui which is a child of StarterGui. None of these objects exist in the 3D workspace, so you can't select them using the Select tool like you can with normal parts. To select any of these GUI-related objects, you must select them from the Explorer window tree where you created them.

We have a text label on the screen, but a white box with the word Label isn’t very useful. Let’s customize it to look like a “version number” GUI, a display element usually found on the menu/intro screen which shows the current version of the game.

  1. In the Explorer window, select the new TextLabel object.
How to make a roblox main menu
  1. Open the Properties window by selecting the View tab and clicking the Properties button.
How to make a roblox main menu
  1. For the Font property (within the Text section), click to the right of the font name and select Highway from the drop-down menu.
How to make a roblox main menu
  1. In the Text property field, type in a new name like Version 1.0.
How to make a roblox main menu
  1. In the TextSize property field, type 35.
How to make a roblox main menu
  1. Now expand the Data section (if it’s not already expanded).
How to make a roblox main menu
  1. For the BorderSizePixel value, enter a new value like 8.
How to make a roblox main menu

Great! The GUI object looks much better now! If you want to get even more creative, try changing properties like TextColor3, BackgroundColor3, BackgroundTransparency, and others.

Positioning Items in a Screen GUI

Now that we have a basic text object on the screen, let’s move it to a new position. Every 2D object in Roblox has a Position property which determines where it will be drawn in relation to its parent object. This position is set by X and Y coordinates where X is the horizontal position and Y is the vertical position.

How to make a roblox main menu

When first created, all 2D objects start with an X and Y position of 0 which is the top-left corner of the screen, but what if you want to move it? Let’s look at the Position property of the text label and learn how!

  1. If the TextLabel object isn’t selected, click on it within the Explorer window.
How to make a roblox main menu
  1. Find the Position property and click on the small arrow to expand it.
How to make a roblox main menu
  1. Now expand the X and Y branches directly under it. Notice that each has unique Scale and Offset properties — these are the values you can use to position the text label within the screen GUI.
How to make a roblox main menu

Scale Property

The Scale property represents a percentage of the parent object’s width or height. Remember that the screen GUI “canvas” spans the full width and height of the 3D game view — that means the Scale property can be used to position an object directly at the center of the view, against the left or right edge, or anywhere between based on a percentage of the screen’s full width or height.

Although Scale indicates a percentage, the range of values that you enter should usually be between 0 and 1, where 0 equals 0% and 1 equals 100%. For example:

How to make a roblox main menu
Scale = 0.1
10% of full width or height

How to make a roblox main menu
Scale = 0.5
50% of full width or height

How to make a roblox main menu
Scale = 0.95
95% of full width or height

Now let’s move the text label to the horizontal center of the screen. Simply enter 0.5 for the Scale value of X and press the Enter/Return key to confirm.

How to make a roblox main menu

The text label should now be positioned more toward the center of the game view.

How to make a roblox main menu

Remember that your game will be played on screens which vary in width versus height. For example, a phone screen may be slightly wider (and less tall) than a PC or console screen. Scale is the best choice for positioning an object in the center of the view because it will remain in the center on many different screens.

The second property in each set is called Offset. Instead of moving the element by a percentage of the parent’s size, it moves it by a specific number of pixels. This can be useful if you want to place a GUI element slightly inside any edge of the game view.

Let’s move the text label just slightly inside the top edge of the screen. Enter 50 for the Offset value of Y and press the Enter/Return key to confirm.

How to make a roblox main menu

Now the text label should be inset just slightly from the top edge of the screen.

How to make a roblox main menu

Offset is the best choice for positioning an object near any edge of the view. Using this option will make sure it remains in the same basic screen position on PC, console, tablet, and phone.

If you look carefully at the current position of the GUI object, you’ll notice that it’s not perfectly centered left-to-right, even though we set PositionXScale to 0.5 (50%).

How to make a roblox main menu

This is because of the object’s default anchor point. An anchor point is a specific point on the object to align with the screen position you set. Imagine the anchor point like a pin stuck through a piece of paper — the pin can be put through any place on the paper, and Roblox will align that pin point with the Position value(s) you set for the object.

In the game editor window, the anchor point is shown by the small square outline on the object (when it’s selected). When you create a new GUI object, the anchor point is set to the top-left corner — this is why that exact point on the object is aligned to the X and Y position values set earlier.

How to make a roblox main menu

The anchor point is based on an X and Y value which is a percentage of the object’s size: 0 equals 0% and 1 equals 100%.

How to make a roblox main menu

You can use this concept to center the GUI object in the exact middle of the screen.

  1. If the TextLabel object isn’t selected, click on it within the Explorer window.
  2. Find the AnchorPoint property and click on the small arrow to expand it.
How to make a roblox main menu
  1. Set the X value to 0.5 and press the Enter/Return key to confirm.
How to make a roblox main menu

The text label should now be positioned exactly in the center of the game view.

How to make a roblox main menu

Anchor point values are not restricted to 0, 0.5, or 1 — you can enter any value between like 0.25 or 0.8, but you cannot set an anchor point less than 0 or greater than 1.

As you can see, the Position and AnchorPoint properties let us put elements anywhere we need to within a screen GUI. We can also change the size of any element using its Size properties.

  1. If the TextLabel object isn’t selected, click on it within the Explorer window.
  2. Find the Size property and click on the small arrow to expand it.
How to make a roblox main menu
  1. Now expand the X and Y branches directly under it. Similar to Position, each has unique Scale and Offset properties.
How to make a roblox main menu

Scale Property

For setting the size of a GUI object, the Scale property works the same as it does for positioning, representing a percentage of the parent object’s width or height. If you set SizeXScale to 0.5 (50%), the object will be exactly half of the screen width.

Let’s experiment and see what happens!

  1. Enter 0.75 for the Scale value of X and press the Enter/Return key to confirm.
How to make a roblox main menu
  1. Enter 0 for the Offset value of X and press the Enter/Return key.
How to make a roblox main menu

The text label should now take up exactly 75% of the screen width.

How to make a roblox main menu

Offset Property

As you noticed above, Size also has a property called Offset. For sizing, Offset is useful if you want to create buttons, labels, or other objects which stay the same number of pixels (width or height) no matter what screen they’re being viewed on.

To increase the height of the text label, simply enter 150 for the Offset value of Y and press the Enter/Return key to confirm.

How to make a roblox main menu

Now the text label should be quite a bit taller than before!

How to make a roblox main menu

Using Negative Offsets

Some GUI layouts are only possible with creative combinations of Scale and Offset values. You can explore this by making the TextLabel object fill the entire screen with a small margin of 20 pixels around all four edges.

  1. Set PositionYOffset to 20. This should bump the object upward just slightly.
How to make a roblox main menu
  1. Set SizeXScale to 1 (100% of the screen width).
  2. Set SizeXOffset to -40 — this makes the object 40 pixels less than the entire screen width, resulting in the desired 20 pixel margin on both sides.
How to make a roblox main menu
  1. Set SizeYScale to 1 (100% of the screen height).
  2. Set SizeYOffset to -40. Just like above, this makes the object 40 pixels less than the full screen height and creates a 20 pixel margin on both the top and bottom.
How to make a roblox main menu

There's at least one other combination of settings which will create the same GUI object above. Can you think of it? Here's a hint: set the anchor point to the center of the TextLabel object and then adjust the Scale and Offset values as needed. Show/hide

AnchorPoint Value
X 0.5
Y 0.5
Position Value
X Scale 0.5
Offset 0
Y Scale 0.5
Offset 0
Size Value
X Scale 1
Offset -40
Y Scale 1
Offset -40

Great! That covers the basics of GUIs, how to create a screen GUI canvas for all players that enter your game, and how to position and resize GUI objects on the screen.