Custom Loading UI V2
Key RequiredUniversal

Custom Loading UI V2

Universal ScriptSpectravaxISBACKSpectravaxISBACK 814 views 15 executesUpdated Oct 15, 2025
3.8/ 5(4 votes)
3175% Positive
Lua Script•313 lines (8848 chars)
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "LoadingGui"
screenGui.Parent = playerGui
screenGui.Enabled = true
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true

local background = Instance.new("ImageLabel")
background.Name = "Background"
background.Size = UDim2.new(1, 0, 1, 0)
background.Position = UDim2.new(0, 0, 0, 0)
background.BackgroundColor3 = Color3.new(0, 0, 0)
background.Image = "rbxassetid://18878365966"
background.BackgroundTransparency = 0
background.ImageTransparency = 0
background.ZIndex = 1
background.Parent = screenGui

local uiScale = Instance.new("UIScale")
uiScale.Name = "UIScale"
uiScale.Parent = background

local function setDeviceScale()
    if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then
        uiScale.Scale = 1.0
    elseif UserInputService.TouchEnabled and UserInputService.KeyboardEnabled then
        uiScale.Scale = 1.2
    elseif UserInputService.GamepadEnabled then
        if UserInputService:GetPlatform() == Enum.Platform.XBoxOne then
            uiScale.Scale = 1.2
        elseif UserInputService:GetPlatform() == Enum.Platform.PS4 then
            uiScale.Scale = 0.9
        else
            uiScale.Scale = 1.1
        end
    else
        uiScale.Scale = 1.1
    end
end
setDeviceScale()

local noob = Instance.new("Frame")
noob.Name = "Noob"
noob.Size = UDim2.new(0.05, 0, 0.16, 0)
noob.Position = UDim2.new(0.1, 0, 0.5, 0)
noob.BackgroundColor3 = Color3.new(0, 0, 1)
noob.BorderSizePixel = 0
noob.ZIndex = 2
noob.Parent = background

local noobCorner = Instance.new("UICorner")
noobCorner.Name = "NoobCorner"
noobCorner.CornerRadius = UDim.new(0.2, 0)
noobCorner.Parent = noob

local leftArm = Instance.new("Frame")
leftArm.Name = "LeftArm"
leftArm.Size = UDim2.new(0.3, 0, 0.375, 0)
leftArm.Position = UDim2.new(-0.3, 0, 0.2, 0)
leftArm.BackgroundColor3 = Color3.new(1, 1, 0)
leftArm.BorderSizePixel = 0
leftArm.ZIndex = 3
leftArm.Parent = noob

local leftArmCorner = Instance.new("UICorner")
leftArmCorner.Name = "LeftArmCorner"
leftArmCorner.CornerRadius = UDim.new(0.3, 0)
leftArmCorner.Parent = leftArm

local rightArm = Instance.new("Frame")
rightArm.Name = "RightArm"
rightArm.Size = UDim2.new(0.3, 0, 0.375, 0)
rightArm.Position = UDim2.new(1, 0, 0.2, 0)
rightArm.BackgroundColor3 = Color3.new(1, 1, 0)
rightArm.BorderSizePixel = 0
rightArm.ZIndex = 3
rightArm.Parent = noob

local rightArmCorner = Instance.new("UICorner")
rightArmCorner.Name = "RightArmCorner"
rightArmCorner.CornerRadius = UDim.new(0.3, 0)
rightArmCorner.Parent = rightArm

local greenLeg = Instance.new("Frame")
greenLeg.Name = "GreenLeg"
greenLeg.Size = UDim2.new(0.4, 0, 0.375, 0)
greenLeg.Position = UDim2.new(0, 0, 1, 0)
greenLeg.BackgroundColor3 = Color3.new(0, 1, 0)
greenLeg.BorderSizePixel = 0
greenLeg.ZIndex = 3
greenLeg.Parent = noob

local leftLegCorner = Instance.new("UICorner")
leftLegCorner.Name = "LeftLegCorner"
leftLegCorner.CornerRadius = UDim.new(0.25, 0)
leftLegCorner.Parent = greenLeg

local greenLeg2 = Instance.new("Frame")
greenLeg2.Name = "GreenLeg2"
greenLeg2.Size = UDim2.new(0.4, 0, 0.375, 0)
greenLeg2.Position = UDim2.new(0.6, 0, 1, 0)
greenLeg2.BackgroundColor3 = Color3.new(0, 1, 0)
greenLeg2.BorderSizePixel = 0
greenLeg2.ZIndex = 3
greenLeg2.Parent = noob

local rightLegCorner = Instance.new("UICorner")
rightLegCorner.Name = "RightLegCorner"
rightLegCorner.CornerRadius = UDim.new(0.25, 0)
rightLegCorner.Parent = greenLeg2

local head = Instance.new("Frame")
head.Name = "Head"
head.Size = UDim2.new(0.8, 0, 0.5, 0)
head.Position = UDim2.new(0.1, 0, -0.5, 0)
head.BackgroundColor3 = Color3.new(1, 1, 0)
head.BorderSizePixel = 0
head.ZIndex = 3
head.Parent = noob

local headCorner = Instance.new("UICorner")
headCorner.Name = "HeadCorner"
headCorner.CornerRadius = UDim.new(0.5, 0)
headCorner.Parent = head

local face = Instance.new("TextLabel")
face.Name = "Face"
face.Size = UDim2.new(0.8, 0, 0.8, 0)
face.Position = UDim2.new(0.1, 0, 0.1, 0)
face.BackgroundTransparency = 1
face.Text = ">:["
face.TextColor3 = Color3.new(0, 0, 0)
face.TextScaled = true
face.Font = Enum.Font.SourceSansBold
face.ZIndex = 4
face.Parent = head

local progressBg = Instance.new("Frame")
progressBg.Name = "ProgressBarBackground"
progressBg.Size = UDim2.new(0.4, 0, 0.05, 0)
progressBg.Position = UDim2.new(0.3, 0, 0.9, 0)
progressBg.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
progressBg.BorderSizePixel = 0
progressBg.ZIndex = 2
progressBg.Parent = background

local progressBgCorner = Instance.new("UICorner")
progressBgCorner.Name = "ProgressBgCorner"
progressBgCorner.CornerRadius = UDim.new(0.2, 0)
progressBgCorner.Parent = progressBg

local progressFill = Instance.new("Frame")
progressFill.Name = "ProgressBarFill"
progressFill.Size = UDim2.new(0, 0, 1, 0)
progressFill.Position = UDim2.new(0, 0, 0, 0)
progressFill.BackgroundColor3 = Color3.new(0, 1, 0)
progressFill.BorderSizePixel = 0
progressFill.ZIndex = 3
progressFill.Parent = progressBg

local fillCorner = Instance.new("UICorner")
fillCorner.Name = "FillCorner"
fillCorner.CornerRadius = UDim.new(0.2, 0)
fillCorner.Parent = progressFill

local progressText = Instance.new("TextLabel")
progressText.Name = "ProgressText"
progressText.Size = UDim2.new(1, 0, 1, 0)
progressText.Position = UDim2.new(0, 0, 0, 0)
progressText.BackgroundTransparency = 1
progressText.Text = "0%"
progressText.TextColor3 = Color3.new(1, 1, 1)
progressText.TextScaled = true
progressText.Font = Enum.Font.SourceSans
progressText.ZIndex = 4
progressText.Parent = progressBg

local textStroke = Instance.new("UIStroke")
textStroke.Name = "TextStroke"
textStroke.Color = Color3.new(0, 0, 0)
textStroke.Thickness = 2
textStroke.Parent = progressText

local hubText = Instance.new("TextLabel")
hubText.Name = "HubText"
hubText.Size = UDim2.new(0.6, 0, 0.2, 0)
hubText.Position = UDim2.new(0.2, 0, 0.4, 0)
hubText.BackgroundTransparency = 1
hubText.Text = "Your Text Hub" --[ ← You can change the script name if you want to. ]--
hubText.TextColor3 = Color3.new(1, 1, 1)
hubText.TextScaled = true
hubText.Font = Enum.Font.SourceSansBold
hubText.ZIndex = 2
hubText.Visible = false
hubText.Parent = background

local noobDuration = 5
local barDuration = 14
local fadeDuration = 5
local walkDistance = UDim2.new(0.6, 0, 0, 0)

local walkTweenInfo = TweenInfo.new(
    noobDuration,
    Enum.EasingStyle.Quad,
    Enum.EasingDirection.Out,
    0,
    false,
    0
)

local bobInfo = TweenInfo.new(
    0.5,
    Enum.EasingStyle.Sine,
    Enum.EasingDirection.InOut,
    -1,
    true,
    0
)

local legSwayInfo = TweenInfo.new(
    0.5,
    Enum.EasingStyle.Sine,
    Enum.EasingDirection.InOut,
    -1,
    true,
    0
)

local fadeTweenInfo = TweenInfo.new(
    fadeDuration,
    Enum.EasingStyle.Linear,
    Enum.EasingDirection.Out,
    0,
    false,
    0
)

local leftLegTween = TweenService:Create(greenLeg, legSwayInfo, {
    Position = greenLeg.Position + UDim2.new(-0.2, 0, 0, 0)
})

local rightLegTween = TweenService:Create(greenLeg2, legSwayInfo, {
    Position = greenLeg2.Position + UDim2.new(0.2, 0, 0, 0)
})

local noobWalkTween = TweenService:Create(noob, walkTweenInfo, {
    Position = noob.Position + walkDistance
})

local bobTween = TweenService:Create(noob, bobInfo, {
    Position = noob.Position + UDim2.new(0, 0, 0, -0.01)
})

local progressTweenInfo = TweenInfo.new(
    noobDuration + barDuration,
    Enum.EasingStyle.Linear,
    Enum.EasingDirection.Out,
    0,
    false,
    0
)

local progressTween = TweenService:Create(progressFill, progressTweenInfo, {
    Size = UDim2.new(1, 0, 1, 0)
})

local backgroundFadeTween = TweenService:Create(background, fadeTweenInfo, {
    ImageTransparency = 1
})

local hubTextFadeTween = TweenService:Create(hubText, fadeTweenInfo, {
    TextTransparency = 1
})

bobTween:Play()
leftLegTween:Play()
rightLegTween:Play()
noobWalkTween:Play()
progressTween:Play()

local startTime = tick()
spawn(function()
    while tick() - startTime < noobDuration + barDuration do
        local progress = math.min(100, math.floor(((tick() - startTime) / (noobDuration + barDuration)) * 100))
        progressText.Text = progress .. "%"
        wait(0.1)
    end
    progressText.Text = "100%"
end)

noobWalkTween.Completed:Connect(function()
    bobTween:Cancel()
    leftLegTween:Cancel()
    rightLegTween:Cancel()
end)

progressTween.Completed:Connect(function()
    progressBg.Visible = false
    noob.Visible = false
    hubText.Visible = true
    backgroundFadeTween:Play()
    hubTextFadeTween:Play()
end)

backgroundFadeTween.Completed:Connect(function()
    screenGui.Enabled = false
end)

Features & Information

This is for something if they want to have a loading ui for their script. Bye. This is the Version 2, it's now updated and now better.
#LoadingUI#Spectravax

Community Comments (1)

voltrixvoltrixOct 28, 2025

Fire w

More Scripts for Universal Scripts