Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How to make a toggle to make a frame appear/disappear?

I want to do a Button or Toggle so when you press it some frame disappear/appear i dont have a script, ia actually dont know much about scripting but my try would be something like

local function onClick()
      
      if game.StarterGui.ScreenGui.Enabled then
            game.StarterGui.ScreenGui.Enabled = false
      elseif
            game.StarterGui.ScreenGui.Enabled = false then
            game.StarterGui.ScreenGui.Enabled = true
      end
end

Yeah, i know i can make a variable so i dont write game.StarterGui.ScreenGui but welp, i also know that the script its wrong but i dont know what to do to make it right

3 answers

✓ Accepted answer

First of all i recommend making the frame invisible instead of disabling the GUI, unless there are different frames and you want to make all of them go invisible. (everything must go in a local script) instead of

local function onclick()

It must be:

[the location of the button].MouseButton1Click:Connect(function()


end)

in between the sentence, put this: (also dont use starter GUI as the location)

game.Players.LocalPlayer.PlayerGui.ScreenGUI.Enabled = not game.Players.LocalPlayer.PlayerGui.ScreenGUI.Enabled

this will make everytime someone presses the button it will become the contrary of what it is [if it is enabled and u press the button it will become disabled and viceverse] here a resume

[the location of the button].MouseButton1Click:Connect(function()
	game.Players.LocalPlayer.PlayerGui.ScreenGui.Enabled = not game.Players.LocalPlayer.PlayerGui.ScreenGui.Enabled
end)

2 comments

0

everythin in a local script

0

Thanks, it worked!

One issue I see right off the bat, is that you are calling your ScreenGui from the StarterGui. I don't think this would work as the gui is cloned to the PlayerGui once the game starts, so your fixed script should look more like this:

local Button = script.Parent
local Gui = game.Players.LocalPlayer.PlayerGui:WaitForChild("Test") --- Test is just a placeholder name for a another gui that isn't the gui this script goes into.

function OnClick()
	if Gui.Enabled == true then
		Gui.Enabled = false
	elseif Gui.Enabled == false then
		Gui.Enabled = true
	end
end

Button.Activated:Connect(OnClick) -- this uses your function when a player clicks the GuiButton

I'm sorry if I provide any misinformation.

Edit: I forgot to mention that this localscript was put inside of a textbutton.

Use this instead

local Frame = --Object Value here
--Script By Sabrna563
local Function Onclick()
	if Frame.visible  then
	Frame.visible = false
	else
	Frame.visible = true
end

This discussion is preserved as it was. New answers, comments, and votes are closed.