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.
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.
Example: “A shop GUI button that toggles a shop panel”
LocalScriptStarterGui › ShopGui › OpenButton-- 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
- Press Play in Studio and open the player's screen.
- Confirm the panel starts hidden and toggles with the button.
- Resize the Studio viewport and try a phone-sized layout.
- 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.