roblox-gui
Use when building, animating, or debugging Roblox GUI elements including HUDs, menus, world-space UI, and player labels. Triggers on: ScreenGui setup, SurfaceGui or BillboardGui placement, UDim2 sizing questions, TweenService UI animations, responsive scaling, LocalScript GUI logic, ResetOnSpawn iss
By sentinelcore · 935 installs
npx skills add sentinelcore/roblox-skills --skill roblox-gui
Source repository · Upstream listing
Roblox GUI Reference
GUI Container Types
Container Parent Use Case
ScreenGui PlayerGui HUDs, menus, overlays — always faces screen
SurfaceGui BasePart World space UI on a part surface (signs, screens)
BillboardGui BasePart or Model Floats above a part in 3D space (name tags, health bars)
ScreenGui
SurfaceGui
BillboardGui
UDim2 Sizing and Positioning
UDim2.new(xScale, xOffset, yScale, yOffset) — scale is 0–1 relative to parent, offset is pixels.
AnchorPoint shifts the element's pivot (0–1 on each axis):
Responsive Design
Prefer scale over offset so UI adapts to all screen sizes.
TweenService Animations
LocalScript Placement
Location Notes
StarterGui Cloned into PlayerGui on join; use ResetOnSpawn = false to persist
StarterPlayerScripts Runs once, not reset on respawn; good for persistent managers
StarterCharacterScripts Re runs each spawn; suited for character dependent UI
ResetOnSpawn
Common Patterns Quick Reference
Pattern Key Setup
Full screen overlay Size = UDim2.fromScale(1,1) , Position = UDim2.fromScale(0,0)
Bottom center HUD bar AnchorPoint = (0.5,1) , Position = UDim2.new(0.5,0,1, 10)
Padded list UIPadding + UIListLayout inside a Frame
Scrollable list ScrollingFrame + UIListLayout ; set CanvasSize from UIListLayout.AbsoluteContentSize
Rounded corners UICorner with CornerRadius = UDim.new(0, 8)
Scaled text TextScaled = true on TextLabel/TextButton so font grows with container
Dynamic frame height AutomaticSize = Enum.AutomaticSize.Y so frame expands to fit children
Health bar Nested frames: outer = background, inner tweened by Size.X.Scale
Name tag BillboardGui on Head, StudsOffset = Vector3.new(0, 2.5, 0)
Common Mistakes
Mistake Fix
GUI disappears on respawn Set ResetOnSpawn = false or use StarterPlayerScripts
UI looks wrong on mobile Use UDim2.fromScale + UIAspectRatioConstraint
Script can't find PlayerGui Use player:WaitForChild("PlayerGui")
Tween doesn't run Ensure the property is tweenable; Text is not, Position and Size are
BillboardGui visible through walls Verify AlwaysOnTop = false
AbsoluteSize is zero on first frame Read it inside task.defer or after first render step
Clicks pass through overlapping frames Add a transparent input blocking Frame or set Modal = true
SurfaceGui flickers Set LightInfluence = 0 ; ensure part isn't too thin
Text tiny on mobile Set TextScaled = true — fixed TextSize doesn't adapt to screen size
UI hard to test on mobile Use Studio's Device Emulator (Test tab → Device) to preview layouts