hide ui
toggles all screen guis on/off.
overview
the hide ui feature toggles all enabled screen guis in playergui, giving you a clean, ui-free view for recording.
how it works
on enable
- scans playergui for all children
- checks each if it's a screengui
- if enabled, adds to tracking table
- disables the gui
for _, gui in ipairs(playerGui:GetChildren()) do
if gui:IsA("ScreenGui") and gui.Enabled then
activeGUIs[gui] = true
gui.Enabled = false
end
end
tracking system
activeGUIs table stores which guis were hidden:
- only tracks guis that were enabled when toggled
- prevents re-enabling guis that were already disabled
- used for restoration on disable
screengui only
only affects screengui instances:
- doesn't touch billboardguis
- doesn't touch surfaceguis
- only screen-space ui
on disable
when disabled:
- loops through activeGUIs table
- checks gui still exists (parent check)
- re-enables each gui
- clears the table
for gui in pairs(activeGUIs) do
if gui and gui.Parent then
gui.Enabled = true
end
end
activeGUIs = {}
use cases
clean gameplay recording
record without any ui elements.
screenshot sessions
capture clean frames of the game.
cinematic shots
create immersive footage without ui.
before/after comparisons
quickly toggle ui to compare views.
limitations
lcs notifications not affected
lcs's own notification gui is created separately and won't be hidden by this feature.
core guis separate
roblox core guis (health, backpack, etc) are hidden by the freecam feature, not this one.
new guis after enable
guis created after lcs is enabled won't be automatically hidden. you'd need to:
- toggle lcs off and on
- or implement a childadded listener
technical details
why track enabled state?
some guis might already be disabled:
- loading screens
- hidden menus
- conditional ui
we only want to restore guis that we disabled.
table as set
activeGUIs uses table as set:
activeGUIs[gui] = true -- add to set
for gui in pairs(activeGUIs) -- iterate set
this is more efficient than an array for this use case.
parent check
before re-enabling, check parent:
if gui and gui.Parent then
guis might be destroyed while lcs is active. this prevents errors.
source code
location: features/hideUI.lua
simple module (~30 lines):
- activeGUIs tracking table
- enable function (hide + track)
- disable function (restore + clear)
customization
whitelist certain guis
don't hide specific guis:
local whitelist = {"ImportantUI", "KeepThisVisible"}
for _, gui in ipairs(playerGui:GetChildren()) do
if gui:IsA("ScreenGui") and gui.Enabled then
if not table.find(whitelist, gui.Name) then
activeGUIs[gui] = true
gui.Enabled = false
end
end
end
auto-hide new guis
add event listener:
local connection = playerGui.ChildAdded:Connect(function(gui)
if gui:IsA("ScreenGui") and gui.Enabled then
activeGUIs[gui] = true
gui.Enabled = false
end
end)
-- store connection for cleanup on disable
troubleshooting
some ui still showing
- might be billboardguis (use hide billboards feature)
- might be core guis (hidden by freecam)
- might be surfaceguis (not affected by this feature)
ui not restoring
- check console for errors
- guis might have been destroyed
- try toggling lcs again
important ui disappeared
- some ui is critical for gameplay
- toggle lcs off to restore
- consider whitelisting important guis