Creating GUI Buttons

Creating GUI Buttons

In this guide, we’ll expand on screen images and explore how to make them into buttons that can be used for menus, in-game actions, and much more.

Button Types – Text and Image

There are two types of button objects in Roblox that can be used in your game’s UI design: TextButton|TextButtons and ImageButton|ImageButtons.

Text Button

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

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.

Adding Buttons to a Screen GUI

Let’s add an ImageButton to the screen and flip it between a normal appearance and a more colorful appearance when a player activates it.

In the Explorer window, find the ScreenGui object.

Insert an ImageButton object.

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

Upload Images

For this button, we need to upload two custom images — one for the normal appearance of the button when it’s just sitting on the screen, and a second image for when a player activates it (clicks it with their mouse, taps it when playing on their phone, or activates it with their console controller).

Normal

Activated

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

This time, instead of uploading an image through the Image property of the button, we’ll use the Game Explorer method. This method is useful when you want to upload more than one image at the same time.

If it’s not already open, click Game Explorer from the View tab.

In the window, right-click on Images and select Add Images.

Find the two images on your computer, select both, and confirm that you’d like to upload them.

When finished uploading, you’ll see both new images ready to use in the game!

Set the Normal Image

Setting the normal appearance for the button can be done through the button object.

In the Explorer window, select the new ImageButton object.

In the Image section of the Properties window, click on the Image property.

In the popup window, click on the ImageButtonNormal image asset.

In the Properties window, set BackgroundTransparency to a value of 1 to make the background transparent.

Move the button slightly away from the corner by setting both Position → X → Offset and Position → Y → Offset to around 30.

Attach a Local Script

The final task is to connect a function to the “activated” event of the button. This function will be used to change the appearance of the button to the brighter activated version. In an actual game, it should also be used to perform an action like opening the game’s main menu.

For this button, we’ll use a LocalScript. This is similar to the Script object which you may be familiar with, but a LocalScript is used to perform actions that only relate to a specific player and things happening on that player’s screen, such as detecting their input on the screen or displaying GUI elements (in contrast, a regular Script is used for things that occur in the overall game world and which affect all parts and players in the game).

In the Explorer window, hover over the ImageButton object, click on the circle ⊕ button, and insert a LocalScript. This will create a new local script and show it.

Test the Button

With the local script in place, we can test the button’s behavior. When the game starts, the button should appear in its normal state. Click the button and its appearance should change to the brighter activated state. Another click should then return it to its normal appearance.

Troubleshooting the Button

If the button doesn't work as you expect, check the following:

In addition to the ImageButtonNormal.png file, make sure you uploaded ImageButtonActivated.png.

Confirm that the names of the uploaded images match the names in the script. If you uploaded image files with different names, you'll need to change the script reference names on lines 6 and 9:"rbxgameasset://Images/ImageButtonActivated""rbxgameasset://Images/ImageButtonNormal"

Make sure that your local script is a direct child of the ImageButton object.

How it Works

Let’s explore the code in the local script to understand how the button works.

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

local button = script.Parent
local toggled = false

The second line sets a variable toggled which lets us track the current state (appearance) of the button. Because the button begins in the normal state, we set the variable’s value to false.

local button = script.Parent
local toggled = false

The next block is a function that will be run when a player activates the button. Inside is a conditional statement. If the variable toggled is false(the button is off), the Image property of the button will be changed to the brighter activated image and the toggled variable will be set to true (meaning the button is on).

The final line connects the button to the function with an GuiButton/Activated|Activated event. This will make the function run whenever the button is activated.

button.Activated:Connect(onButtonActivated)

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.

Great job! As you can see, creating basic buttons in Roblox can be done with either a TextButton or ImageButton object, and hooking up a local script lets you detect basic button activation as well as swap between two images.

Tags:

gui

button

ui

RELATED ARTICLES

How this site use cookies

This Platform uses cookies to offer you a better experience, to personalize content, to provide social media features and to analyse the traffic on our site. For further information, including information on how to prevent or manage the use of cookies on this Platform, please refer to our Privacy and Cookie Policy.