PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience
Collapse Sidebar

IsLoaded

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 ReplicatedFirst, LocalScript|LocalScripts will not run while the game has not loaded. The following snippet, ran from a LocalScript in ReplicatedFirst will yield until the game has loaded:

if not game:IsLoaded() then
    game.Loaded:Wait()
end

See also

  • DataModel/Loaded, an event that fires when the game has loaded
  • Instance/WaitForChild, a function which can be used to wait for an individual Instance to replicate without having to wait for the whole game to

Returns

Return Type Summary

Whether the client has finished loading the game for the first time


Code Samples


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 ReplicatedFirst.

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()