✓ Accepted answer
When you create new GUIs in Studio, you create them in StarterGui. Although that is just a kind of storage. When a player joins the game, either in Studio or in the real game, everything inside StarterGui is auomatically duplicated and placed into the player's PlayerGui. So if you want to change something in a Gui while the game is running, you have to aim for the gui located in the player's PlayerGui.
Let's say you've got a ScreenGui, and in that some children.
ScreenGui
FrameOne
FrameTwo
FrameThree
FrameFour
TextButton
LocalScript
We can also pretend that the LocalScript is suppose to make FrameThree become invisible, make the Visible property to false, when the TextButton is clicked. Then this would be the code:
script.Parent.MouseButton1Click:Connect(function()
script.Parent.Parent.Parent.FrameThree.Visible = false
end)
On the first line, script.Parent indicates the TextButton.
On the second line, script.Parent.Parent.Parent.FrameThree indicates FrameThree, which is the child of our ScreenGui.
Everytime you use script in your code, you mean the specific script you're currently writing in. Then .Parent mean the Parent of your script. So in this case, script.Parent is our TextButton.
So the reason to why you use .Parent and don't go directly to the gui using game.StarterGui is because what is in StarterGui has been duplicated, which means that any changes made to a gui in StarterGui will not affect any player.
StarterGui
4 comments
good explanation
Thank you
Thanks for your explanation.
No problem