Cool toggle gui idk
Key RequiredUniversal

Cool toggle gui idk

Universal ScriptJeffFNFJeffFNF 2.4K views 31 executesUpdated Aug 4, 2025
Unrated
00
Lua Script•159 lines (4441 chars)
local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")

-- Wait for PlayerGui to be ready
if not PlayerGui then
	Player.CharacterAdded:Wait()
	PlayerGui = Player:WaitForChild("PlayerGui")
end

-- Create ScreenGui
local gui = Instance.new("ScreenGui")
gui.Name = "AnimatedToggleGUI"
gui.ResetOnSpawn = false
gui.Parent = PlayerGui

-- Create Main Frame
local main = Instance.new("Frame")
main.Size = UDim2.new(0, 150, 0, 50)
main.Position = UDim2.new(0.5, -75, 0.5, -25)
main.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
main.BorderSizePixel = 0
main.AnchorPoint = Vector2.new(0.5, 0.5)
main.Active = true -- Required for draggable
main.Draggable = true -- Makes the frame draggable
main.Parent = gui

-- Add corner to the main frame
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 8)
mainCorner.Parent = main

-- Create Label
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -60, 1, 0)
label.Position = UDim2.new(0, 10, 0, 0)
label.BackgroundTransparency = 1
label.Text = "Toggle"
label.TextColor3 = Color3.fromRGB(200, 200, 200)
label.Font = Enum.Font.GothamSemibold
label.TextSize = 16
label.TextXAlignment = Enum.TextXAlignment.Left
label.TextYAlignment = Enum.TextYAlignment.Center
label.Parent = main

-- Create Toggle Background
local toggleBg = Instance.new("Frame")
toggleBg.Size = UDim2.new(0, 40, 0, 20)
toggleBg.Position = UDim2.new(1, -50, 0.5, -10)
toggleBg.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
toggleBg.BorderSizePixel = 0
toggleBg.BackgroundTransparency = 0
toggleBg.ClipsDescendants = false -- Set to false for better visuals
toggleBg.Parent = main

-- Create corner on the toggle
local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(0, 10)
toggleCorner.Parent = toggleBg

-- Create toggle circle
local circle = Instance.new("Frame")
circle.Size = UDim2.new(0, 18, 0, 18)
circle.Position = UDim2.new(0, 1, 0, 1)
circle.BackgroundColor3 = Color3.fromRGB(60, 60, 60) -- Dark gray (OFF)
circle.BorderSizePixel = 0
circle.Parent = toggleBg

local circleCorner = Instance.new("UICorner")
circleCorner.CornerRadius = UDim.new(1, 0)
circleCorner.Parent = circle

-- Toggle state
local toggled = false
local isAnimating = false

-- Tween Info
local tweenInfo = TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out)

-- Tween positions
local onTween = TweenService:Create(circle, tweenInfo, {
	Position = UDim2.new(1, -19, 0, 1),
	BackgroundColor3 = Color3.fromRGB(0, 170, 0) -- Soft green (ON)
})

local offTween = TweenService:Create(circle, tweenInfo, {
	Position = UDim2.new(0, 1, 0, 1),
	BackgroundColor3 = Color3.fromRGB(60, 60, 60) -- Dark gray (OFF)
})

-- Background color tweens
local bgOnTween = TweenService:Create(toggleBg, tweenInfo, {
	BackgroundColor3 = Color3.fromRGB(0, 100, 0) -- Dark green background
})

local bgOffTween = TweenService:Create(toggleBg, tweenInfo, {
	BackgroundColor3 = Color3.fromRGB(15, 15, 15) -- Very dark gray background
})

-- Toggle function
local function toggle()
	if isAnimating then return end -- Prevents spam clicking
	
	isAnimating = true
	toggled = not toggled
	
	if toggled then
		onTween:Play()
		bgOnTween:Play()
		print("Toggle ON") -- Debug
	else
		offTween:Play()
		bgOffTween:Play()
		print("Toggle OFF") -- Debug
	end
	
	-- Reset animation flag
	onTween.Completed:Connect(function()
		isAnimating = false
	end)
	offTween.Completed:Connect(function()
		isAnimating = false
	end)
end

-- Connect input events
toggleBg.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		toggle()
	end
end)

-- Add mobile (touch) support
circle.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		toggle()
	end
end)

-- Function to get the current toggle state (useful for other scripts)
function getToggleState()
	return toggled
end

-- Function to programmatically set the toggle state
function setToggleState(state)
	if state ~= toggled then
		toggle()
	end
end

-- Cleanup when the player leaves
Players.PlayerRemoving:Connect(function(player)
	if player == Player then
		gui:Destroy()
	end
end)

Features & Information

Just a toggle and cool gui toggle If you see the print("On") or print("Off") you can Change the code :)
#Toggle#UiLibrary

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts