Loading Screen Review

So I made a loading screen that works without CharacterAutoLoads and I’d like feedback on the loading screen and the script.

Local Script:

local RF = game:GetService('ReplicatedFirst')
local CP = game:GetService('ContentProvider')
local TS = game:GetService('TweenService')
local Players = game:GetService('Players')

local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild('PlayerGui')

local LoadScreen = RF:WaitForChild('LoadScreen')
LoadScreen.Parent = PlayerGui

local Bar = LoadScreen:WaitForChild('Container'):WaitForChild('LoadingBar'):WaitForChild('Bar')
local Amount = LoadScreen.Container:WaitForChild('Amount')
local Logo = LoadScreen.Container:WaitForChild('LoadingLogo')


local Tween = TS:Create(Logo, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1), {Rotation = 360})
Tween:Play()


local Assets = {}

task.wait(10)

for i,v in pairs(workspace:GetDescendants()) do
	table.insert(Assets, v)
end

RF:RemoveDefaultLoadingScreen()

for i = 1, #Assets do
	local Asset = Assets[i]
	CP:PreloadAsync({Asset})

	local Progress = i / #Assets
	Bar.Size = UDim2.new(Progress, 0, 1, 0)

	Amount.Text = i..' / '..#Assets
end

task.delay(2.25, function()
	for i,v in pairs(LoadScreen:GetDescendants()) do
		if v:IsA('Frame') then
			local Tween = TS:Create(v, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In), {BackgroundTransparency = 1})
			Tween:Play()
		elseif v:IsA('TextLabel') then
			local Tween = TS:Create(v, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In), {TextTransparency = 1})
			Tween:Play()
		elseif v:IsA('ImageLabel') then
			local Tween = TS:Create(v, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In), {ImageTransparency = 1})
			Tween:Play()
		end
	end	
end)
4 Likes

give us a video, no one wants to download something unles they absolutely have to.

Why is the video 2 seconds per frame? :laughing:

Anyways, it’s nice, not much to say about it. I’d either remove the Roblox logo or replace it with some other icon.

1 Like

This was recorded with the Roblox recorder which is horrid. I don’t feel like downloading OBS.

1 Like

If you’re on Windows you can hit Win + G to open the Xbox Game Bar and record in a better quality.

As for the video, I don’t like the placement of the rotating Roblox logo, it feels off. Maybe move it a bit left?

3 Likes

Thank you for that! It looked a little off to be honest…

Looks great in the video!

As far as the code, there are a few things I noticed:

  • The task.wait(10). You probably shouldn’t just be waiting ten seconds unless it’s for testing.
  • Instead of using task.delay(2.5, ...) I would use TweenInfo.DelayTime (it’s the 6th parameter of TweenInfo.new). Either works fine though.
  • I also probably wouldn’t delay the removal of the loading screen by 2.5 seconds. Maybe something like 0-1 seconds or use a different easing style.
  • If your game is going to have UI menus, don’t forgot to preload those in addition to the stuff in workspace :+1:

Most of these things are pretty small. Overall your loading screen is pretty good! Nice job :happy2:

3 Likes

I use do use preload and the task.wait(10) is just for the instances in workspace to actually exist in workspace. But I didn’t know about Tweeninfo.DelayTime. Thank you for this amazing feedback!

1 Like

I really like the UI. It’s really fast and doesn’t have any bugs from what I can see. Maybe you could add like a picture somewhere if you would like, but this is still really good!