Telas de Carregamento

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:

  1. Em ReplicatedFirst , crie um LocalScript.
  2. Use o exemplo de código a seguir para criar e personalizar um Objeto ScreenGui. 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.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.IgnoreGuiInset = true
screenGui.Parent = playerGui

-- Substitua os valores do ScreenGui por seus possuir
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.GothamMedium
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "Loading"
textLabel.TextSize = 28
textLabel.Parent = screenGui

-- Remova a tela de carregamento padrão
ReplicatedFirst:RemoveDefaultLoadingScreen()

task.wait(5)  -- Force a tela a aparecer por um número mínimo de segundos

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

screenGui: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.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = ReplicatedFirst.LoadingScreen
screenGui.IgnoreGuiInset = true
screenGui.Parent = playerGui

-- Remova a tela de carregamento padrão
ReplicatedFirst:RemoveDefaultLoadingScreen()

task.wait(5)  -- Force a tela a aparecer por um número mínimo de segundos

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

screenGui: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.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.IgnoreGuiInset = true
screenGui.Parent = playerGui

local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.GothamMedium
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "Loading"
textLabel.TextSize = 28
textLabel.Parent = screenGui

local loadingRing = Instance.new("ImageLabel")
loadingRing.Size = UDim2.new(0, 256, 0, 256)
loadingRing.BackgroundTransparency = 1
loadingRing.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ão
ReplicatedFirst: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 segundos

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

screenGui:Destroy()

Comente algo legal

Your email address will not be published. Required fields are marked *