This function returns true if the client has finished loading the game for the first time.
When all initial
Instance|Instances in the game has finished replicating to the client, this function will return true.
Unless they are parented to
LocalScript|LocalScripts will not run while the game has not loaded. The following snippet, ran from a
ReplicatedFirst will yield until the game has loaded:
if not game:IsLoaded() then game.Loaded:Wait() end
DataModel/Loaded, an event that fires when the game has loaded
Instance/WaitForChild, a function which can be used to wait for an individual
Instanceto replicate without having to wait for the whole game to
Whether the client has finished loading the game for the first time
Custom Loading Screen
This sample is a simple demonstration of how a custom loading screen can be implemented. To run this code it should be placed in a
LocalScript and parented to
In this example, a basic loading screen will be created and shown until the game has loaded (for a minimum time of 3 seconds). Developers may wish to expand on this with more elegant GUI elements. When doing so ensure that all such elements are parented to
ReplicatedFirst and fetched using
Instance/WaitForChild to ensure they replicate correctly.
local Players = game:GetService("Players") local ReplicatedFirst = game:GetService("ReplicatedFirst") local localPlayer = Players.LocalPlayer local playerGui = localPlayer:WaitForChild("PlayerGui") local MIN_TIME = 3 -- create a basic loading gui local screenGui = Instance.new("ScreenGui") local textLabel = Instance.new("TextLabel", screenGui) textLabel.Text = "Loading" textLabel.Position = UDim2.new(0.5, 0, 0.5, 0) textLabel.AnchorPoint = Vector2.new(0.5, 0.5) textLabel.Size = UDim2.new(1 , 0, 1, 100) -- make sure the topbar is covered textLabel.FontSize = Enum.FontSize.Size14 screenGui.Parent = playerGui -- hide the default loading screen ReplicatedFirst:RemoveDefaultLoadingScreen() -- loop local count = 0 local startTick = tick() while true do local timeElapsed = tick() - startTick -- if the game has loaded and the minimum time has elapsed then break the loop if game:IsLoaded() and timeElapsed > MIN_TIME then break end -- animate the text textLabel.Text = "Loading " .. string.rep(".",count) count = (count + 1) % 4 wait(.3) end -- destroy the loading screen screenGui:Destroy()