O Roblox exibe uma tela de carregamento padrão quando os usuários estão se conectando a uma experiência, mas você pode personalizar sua experiência com uma tela de carregamento personalizada que contém conteúdo estático ou animado.
Exibindo telas de carregamento personalizadas
Para exibir uma tela de carregamento personalizada, você pode projetar uma instância ScreenGui diretamente em um LocalScript , ou você pode fazer referência a um objeto ScreenGui em sua área de trabalho. Ambas as opções usam ReplicatedFirst , pois este serviço replica instâncias para clientes antes que qualquer outra coisa seja replicada. Isso garante que sua tela de carregamento seja a primeira coisa que os usuários vêem quando entram em sua experiência.
Projetando dentro do LocalScripts
Para projetar e exibir uma tela de carregamento personalizada:
Em ReplicatedFirst , crie um LocalScript.
Use o exemplo de código a seguir para criar e personalizar um ObjetoScreenGui. Você pode modificar o código a seguir com seus próprios valores para criar seu design:
local Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local screenGui = Instance.new("ScreenGui")screenGui.IgnoreGuiInset = truescreenGui.Parent = playerGui-- Substitua os valores do ScreenGui por seus possuirlocal textLabel = Instance.new("TextLabel")textLabel.Size = UDim2.new(1, 0, 1, 0)textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)textLabel.Font = Enum.Font.GothamMediumtextLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)textLabel.Text = "Loading"textLabel.TextSize = 28textLabel.Parent = screenGui-- Remova a tela de carregamento padrãoReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Force a tela a aparecer por um número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Referenciando ScreenGuis
Em vez de criar o ScreenGui através de um LocalScript , você também pode fazer referência a um ScreenGui existente diretamente em seu workspace. Certifique-se de que sua experiência inclua um ScreenGui dentro de ReplicatedFirst e que o ScreenGui inclua elementos da interface do usuário como TextLabels e ImageLabels , e então configure-o como a tela de carregamento fazendo referência a ele dentro de um LocalScript . Esse método permite que você visualize facilmente sua tela de carregamento enquanto a está criando.
Para demonstrar este processo, os seguintes LocalScript fazem referência a um ScreenGui chamado LoadingScreen dentro de ReplicatedFirst, e então removem a tela de carregamento padrão para que a única tela de carregamento que um usuário pode ver seja sua própria tela de carregamento personalizada:
local Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local screenGui = ReplicatedFirst.LoadingScreenscreenGui.IgnoreGuiInset = truescreenGui.Parent = playerGui-- Remova a tela de carregamento padrãoReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Force a tela a aparecer por um número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Adicionando animações
Além das telas de carregamento estáticas personalizadas, você pode adicionar animações para melhorar a tela de carregamento e indicar o progresso do carregamento. A maneira mais fácil de fazer isso é criar um elemento da interface do usuário, como TextLabel ou ImageLabel, e depois animá-lo usando TweenService. Por exemplo, a seguinte amostra de código cria um novo ScreenGui com um filho ImageLabel, remove a tela de carregamento padrão e, em seguida, TweenService gira o ImageLabel continuamente até a experiência carregar:
local Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local screenGui = Instance.new("ScreenGui")screenGui.IgnoreGuiInset = truescreenGui.Parent = playerGuilocal textLabel = Instance.new("TextLabel")textLabel.Size = UDim2.new(1, 0, 1, 0)textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)textLabel.Font = Enum.Font.GothamMediumtextLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)textLabel.Text = "Loading"textLabel.TextSize = 28textLabel.Parent = screenGuilocal loadingRing = Instance.new("ImageLabel")loadingRing.Size = UDim2.new(0, 256, 0, 256)loadingRing.BackgroundTransparency = 1loadingRing.Image = "rbxassetid://4965945816"loadingRing.AnchorPoint = Vector2.new(0.5, 0.5)loadingRing.Position = UDim2.new(0.5, 0, 0.5, 0)loadingRing.Parent = screenGui-- Remova a tela de carregamento padrãoReplicatedFirst:RemoveDefaultLoadingScreen()local tweenInfo = TweenInfo.new(4, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1)local tween = TweenService:Create(loadingRing, tweenInfo, {Rotation = 360})tween:Play()task.wait(5) -- Force a tela a aparecer por um número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()