PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience

Creating GUI Buttons

Creating GUI Buttons

Jul 31 2018, 11:28 AM PST 10 min

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.

  1. In the Explorer window, find the ScreenGui object.
  2. 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

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.

  1. If it’s not already open, click Game Explorer from the View tab.
  1. In the window, right-click on Images and select Add Images.
  1. Find the two images on your computer, select both, and confirm that you’d like to upload them.
  2. 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.

  1. In the Explorer window, select the new ImageButton object.
  1. In the Image section of the Properties window, click on the Image property.
  1. In the popup window, click on the ImageButtonNormal image asset.
  1. In the Properties window, set BackgroundTransparency to a value of 1 to make the background transparent.
  1. Move the button slightly away from the corner by setting both PositionXOffset and PositionYOffset 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).

  1. 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.
  1. Delete any existing code, then copy and paste in these new lines:
local button = script.Parent
local toggled = false

local function onButtonActivated()
	if toggled == false then
		button.Image = "rbxgameasset://Images/ImageButtonActivated"
		toggled = true
	else		
		button.Image = "rbxgameasset://Images/ImageButtonNormal"
		toggled = false
	end
end

button.Activated:Connect(onButtonActivated)

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.

How it Works

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

  1. 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
  1. 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
  1. 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).
local function onButtonActivated()
	if toggled == false then
		button.Image = "rbxgameasset://Images/ImageButtonActivated"
		toggled = true
	else		
		button.Image = "rbxgameasset://Images/ImageButtonNormal"
		toggled = false
	end
end

The fallback condition (else) will be triggered if the button is in the activated state. This condition resets the button to the normal appearance and sets toggled back to false.

local function onButtonActivated()
	if toggled == false then
		button.Image = "rbxgameasset://Images/ImageButtonActivated"
		toggled = true
	else		
		button.Image = "rbxgameasset://Images/ImageButtonNormal"
		toggled = false
	end
end
  1. 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