Skip to content

Roblox GUI Maker

Build a working screen interface for an experience you own. Start with a shop panel that opens and closes, then describe the controls your game actually needs.

Free starter codeScreenGui + LocalScriptTest in Studio

Make your own Roblox GUI script

Describe what your player should see and what each button should do. A GUI is drawn for each player, so the button behavior here runs in a LocalScript. If a button spends coins, grants an item, or checks a purchase, the server must verify that action separately.

Checking availability…
1 free script a week

Sign in to save your scripts and ideas. Requests are sent to the configured AI service. Privacy

Try:

Example: “A shop GUI button that toggles a shop panel”

LocalScriptStarterGui › ShopGui › OpenButton
Luau syntax (not run)Placement rules (not run)Sandbox startup (not run)Roblox (not run)
GUI.client.lua
-- Put this LocalScript inside a TextButtonlocal button = script.Parentlocal panel = button.Parent:WaitForChild("ShopPanel")panel.Visible = falsebutton.Activated:Connect(function()    panel.Visible = not panel.Visible    button.Text = panel.Visible and "Close shop" or "Open shop"end)

Build the interface in Explorer

In Roblox Studio, open View → Explorer. Add a ScreenGui under StarterGui and name it ShopGui. Give it a TextButton named OpenButton and a sibling Frame named ShopPanel. Finally, put a LocalScript inside OpenButton. The names matter because the example calls WaitForChild("ShopPanel").

StarterGui
└─ ShopGui (ScreenGui)
   ├─ OpenButton (TextButton)
   │  └─ LocalScript
   └─ ShopPanel (Frame)

What the example does

The LocalScript finds the button's parent and waits for its sibling panel. It starts with the panel hidden. When the player activates the button, it reverses the panel's Visible property and changes the button label to match. Roblox's Activated event covers mouse, touch, and gamepad activation.

This example changes only what a player sees. It does not create a shop inventory, save purchases, or award items. Add those as separate server features once the interface itself works.

Test it before adding purchases

  1. Press Play in Studio and open the player's screen.
  2. Confirm the panel starts hidden and toggles with the button.
  3. Resize the Studio viewport and try a phone-sized layout.
  4. If nothing happens, check Output and compare the Explorer names with the tree above.

Common GUI problems

Infinite yield on ShopPanel: the Frame is missing, misspelled, or not a sibling of OpenButton. Button appears but does nothing: make sure the code is in a LocalScript under a ScreenGui that reaches the player's PlayerGui. Panel is behind another element:inspect its ZIndex and parent containers. Looks wrong on mobile: check sizing and spacing in Studio's device emulator before publishing.