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.
Exibir telas de carregamento personalizadas
Para exibir uma tela de carregamento personalizada, você pode projetar uma instância ScreenGui diretamente dentro de um LocalScript , ou você pode referenciar um objeto ScreenGui em seu espaço de trabalho.Ambas as opções utilizam ReplicatedFirst , como este serviço que replica instâncias para os clientes antes de qualquer outra coisa ser replicada.Isso garante que a sua tela de carregamento seja a primeira coisa que os usuários veem quando entram na sua experiência.
Projete dentro de LocalScripts
Para projetar e exibir uma tela de carregamento personalizada:
- Em ReplicatedFirst , crie um LocalScript.
- Use o seguinte exemplo de código para criar e personalizar um ObjetoScreenGui.Você pode modificar o seguinte código 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) -- Forçar a tela a aparecer por um número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
ScreenGuis de Referência
Em vez de criar o ScreenGui através de um LocalScript , você também pode referenciar um existente ScreenGui diretamente em seu espaço de trabalho.Certifique-se de que sua experiência inclua um ScreenGui dentro de ReplicatedFirst e que o ScreenGui inclua elementos de UI como TextLabels e ImageLabels , então defina-o como a tela de carregamento referenciando-o dentro de um LocalScript .Este método permite que você visualize facilmente sua tela de carregamento enquanto a cria.
Para demonstrar esse processo, as seguintes referências LocalScript mencionam um ScreenGui chamado Tela de Carregamento dentro de ReplicatedFirst , então removem a tela de carregamento padrão para que a única tela de carregamento que um usuário possa 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) -- Forçar a tela a aparecer por um número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Adicionar animações
Além de telas de carregamento estático personalizadas, você pode adicionar animações para melhorar a tela de carregamento e indicar o progresso de carregamento.A maneira mais fácil de fazer isso é criar um elemento de UI, como um TextLabel ou ImageLabel, então animá-lo usando TweenService.Por exemplo, o seguinte código de exemplo cria um novo ScreenGui com um filho ImageLabel , remove a tela de carregamento padrão, então TweenService gira o ImageLabel continuamente até que a experiência carregue:
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) -- Forçar a tela a aparecer por um número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()