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:
En ReplicatedFirst , crea un LocalScript.
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.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local screenGui = Instance.new("ScreenGui")screenGui.IgnoreGuiInset = truescreenGui.Parent = playerGui-- Reemplaza los valores de ScreenGui con los en posesiónlocal 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-- Elimina la pantalla de carga predeterminadaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Forzar la pantalla a aparecer por un número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui: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.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local screenGui = ReplicatedFirst.LoadingScreenscreenGui.IgnoreGuiInset = truescreenGui.Parent = playerGui-- Elimina la pantalla de carga predeterminadaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Forzar la pantalla a aparecer por un número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui: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.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-- Elimina la pantalla de carga predeterminadaReplicatedFirst: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 segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()