So, I have a custom loading screen that just basically says its loading the game. It works perfectly fine.
The issue is that when a user will try to respawn or refresh, the loading GUI will appear again meaning the user will have to wait another 10 seconds until they can continue gameplay.
Is there a way to make it so these GUIs only ever appear when a user has joined the game.
Having the loading screen be parented to the startergui is not really good practice, instead, you should try to parent it to a localscript inside ReplicatedFirst, the code of the localscript should be something like this:
local PlayerGui = Game:GetService("Players").LocalPlayer.PlayerGui
local ReplicatedFirst = script.Parent -- this is equal to Game:GetService("ReplicatedFirst")
local LoadingGui = script:WaitForChild("LoadingGui")-- Change "LoadingGui" to the name of your gui
LoadingGui.Parent = PlayerGui
ReplicatedFirst:RemoveDefaultLoadingScreen() --This will remove roblox's default loading screen so you can make your own.
Instances parented in ReplicatedFirst will have load priority, ideal for putting stuff like LoadingScreen’s, tutorials and intros.
This script basically will parent your Loading screen into PlayerGui, effectively displaying it.
Then ReplicatedFirst:RemoveDefaultLoadingScreen() is called, removing roblox’s default loading screen, allowing for your own loading screen to take over.