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

How do you make a simple loading screen?

1 comment

0

Have a GUI cover the whole screen and its text could say "Loading...".

2 answers

✓ Accepted answer

This part should create a localscript and gui in ReplicatedFirst.

local Loading = Instance.new("LocalScript")
Loading.Name = "Loading"
Loading.Parent = game.ReplicatedFirst

local Main = Instance.new("ScreenGui")
Main.Name = "Main"
Main.Parent = Loading
Main.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

local Image = Instance.new("ImageLabel")
Image.Name = "Image"
Image.Parent = Main
Image.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Image.BorderColor3 = Color3.fromRGB(0, 0, 0)
Image.BorderSizePixel = 0
Image.Size = UDim2.new(1, 0, 1, 0)

local Label = Instance.new("TextLabel")
Label.Name = "Label"
Label.Parent = Image
Label.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
Label.BackgroundTransparency = 0.500
Label.BorderColor3 = Color3.fromRGB(0, 0, 0)
Label.BorderSizePixel = 0
Label.Position = UDim2.new(0.25, 0, 0.8, 0)
Label.Size = UDim2.new(0.5, 0, 0.1, 0)
Label.Font = Enum.Font.Highway
Label.Text = "Loading . . ."
Label.TextColor3 = Color3.fromRGB(0, 0, 0)
Label.TextScaled = true
Label.TextSize = 15
Label.TextWrapped = true

This part goes inside the loading script in ReplicatedFirst. It will do the 'loading...' until the player has a BoolValue inside them with the name 'Loaded' and it's value is true.

local Players = game:GetService("Players");
local ReplicatedFirst = game:GetService("ReplicatedFirst");

ReplicatedFirst:RemoveDefaultLoadingScreen();

local Player = Players.LocalPlayer;
local PlayerGui = Player:WaitForChild("PlayerGui");

local Loading = script.Loading;

script.Parent = PlayerGui;

local dot = 0;

repeat wait(1)
	if dot == 0 then
		Loading.Image.Label.Text = "Loading";
		dot = 1;
	elseif dot == 1 then
		Loading.Image.Label.Text = "Loading .";
		dot = 2;
	elseif dot == 2 then
		Loading.Image.Label.Text = "Loading . .";
		dot = 3;
	else
		Loading.Image.Label.Text = "Loading . . .";
		dot = 0;
	end
until Player:FindFirstChild("Loaded") and Player:FindFirstChild("Loaded").Value == true;

5 seconds after a player joins, the loading gui will stop. [Script in ServerScriptService]

game.Players.PlayerAdded:Connect(function(player)
	wait(5)
	local a = Instance.new("BoolValue", player)
	a.Name = "Loaded"
	a.Value = player
end)

1 comment

0

Thanks!

You can make a ScreenGui with a frame inside(Rename the screen GUI to "LoadingScreen"). Set the frame's offsets to 0 and scale 1 (on both X and Y) and center the frame. Then add a text label and change it's text to "Loading Game, please wait"(or whatever you want). And if you want the Gui to disappear after something happened(for example Player joined the game) You can do it by using a script similar to this(script should be in ServerScriptService)

local Frame = game.Players.LocalPlayer.PlayerGui.LoadingScreen.Frame
Frame.Visible = true

game.Players.PlayerAdded:Connect(function(player) -- script runs when the player joins
	wait(10) --change 10 to whatever time you want the loading to take in seconds
	Frame.Visible = false
end)

Hope this helped.

3 comments

0

Ghost40Z your so good that you don’t even feel like your a newbie at scripting

0

Thx

0

I am definetely a new scripter, anything I try to do it kinda.. Doesn't work most of the time and I spend days working on it

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