Pantallas de carga

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Roblox muestra una pantalla de carga predeterminada cuando los usuarios se están conectando a una experiencia, pero puedes personalizar tu experiencia con una pantalla de carga personalizada que contiene contenido estático o animado.

Mostrando pantallas de carga personalizadas

Para mostrar una pantalla de carga personalizada, puede diseñar una ScreenGui instancia directamente dentro de un LocalScript , o puede hacer referencia a un ScreenGui objeto en su espacio de trabajo. Ambas opciones utilizan ReplicatedFirst , ya que este servicio replica las instancias a los clientes antes de que se replica cualquier otra cosa. Esto garantiza que su pantalla de carga sea lo primero que ven los usuarios cuando ingresan a su experiencia.

Diseño dentro de LocalScripts

Para diseñar y mostrar una pantalla de carga personalizada:

  1. En ReplicatedFirst , crea un LocalScript.

  2. Usa el siguiente código de ejemplo para crear y personalizar un ScreenGui objeto. Puedes modificar el siguiente código con tus propios valores para crear tu diseño:


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
-- Reemplaza los valores de ScreenGui con los en posesión
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
-- Elimina la pantalla de carga predeterminada
ReplicatedFirst:RemoveDefaultLoadingScreen()
task.wait(5) -- Forzar la pantalla a aparecer por un número mínimo de segundos
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

Referenciando Guías de Pantalla

En lugar de crear el ScreenGui a través de un LocalScript, también puede hacer referencia a un ScreenGui existente directamente en su espacio de trabajo. Asegúrese de que su experiencia incluya un ScreenGui dentro de ReplicatedFirst y que el ScreenGui incluya elementos de interfaz de usuario como TextLabels y ImageLabels, y luego configure como pantalla de carga referenciándola dentro de un LocalScript. Este método le permite ver fácilmente su pantalla de carga mientras la está creando.

Para demostrar este proceso, el siguiente LocalScript hace referencia a un ScreenGui llamado LoadingScreen dentro de ReplicatedFirst, luego elimina la pantalla de carga predeterminada para que la única pantalla de carga que pueda ver un usuario sea su propia pantalla de carga 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
-- Elimina la pantalla de carga predeterminada
ReplicatedFirst:RemoveDefaultLoadingScreen()
task.wait(5) -- Forzar la pantalla a aparecer por un número mínimo de segundos
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

Añadiendo animaciones

Además de las pantallas de carga estáticas personalizadas, puede agregar animaciones para mejorar la pantalla de carga e indicar el progreso de la carga. La forma más fácil de hacer esto es crear un elemento de interfaz de usuario, como TextLabel o ImageLabel, y luego animarlo usando TweenService. Por ejemplo, la siguiente muestra de código crea un nuevo ScreenGui con un niño ImageLabel, elimina la pantalla de carga predeterminada, luego TweenService gira el ImageLabel continuamente hasta que la experiencia se cargue:


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
-- Elimina la pantalla de carga predeterminada
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) -- Forzar la pantalla a aparecer por un número mínimo de segundos
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()