When i touch the button why is the gui not coming up?

Try Activated instead of Touched.

image

Try this.

local Button = script.Parent

local function GuiOpener(hitPart)
local character = hitPart.Parent:FindFirstChild("Humanoid")

if character then
local player = game.Players:FindFirstChild(character.Name)

if player then
local plrgui = player.PlayerGui.ScreenGui.Frame.Visible = true
end

end

end

Button.Touched:Connect(GuiOpener)

Your script is affecting the GUI in StarterGUI, not the one on the player. You have to do game.Players:GetPlayerFromCharacter() to get the player, then go to their PlayerGui to change frame’s visibility.