Roblox muestra una pantalla de carga predeterminada cuando los usuarios se conectan a una experiencia, pero puedes personalizar tu experiencia con una pantalla de carga personalizada que contenga contenido estático o animado.
Mostrar pantallas de carga personalizadas
Para mostrar una pantalla de carga personalizada, puedes diseñar una instancia ScreenGui directamente dentro de una LocalScript , o puedes referenciar un objeto ScreenGui en tu espacio de trabajo.Ambas opciones utilizan ReplicatedFirst , como este servicio que replica instancias a los clientes antes de que se replique 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 ejemplo de código para crear y personalizar un objeto ScreenGui.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-- Reemplazar 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-- Eliminar la pantalla de carga predeterminadaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Fuerza a que la pantalla aparezca durante un número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
ScreenGuis de referencia
En lugar de crear el ScreenGui a través de un LocalScript , también puedes referenciar un existente ScreenGui directamente en tu 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 , luego configúelo como la pantalla de carga al referirse a ella dentro de una LocalScript .Este método te permite ver fácilmente tu pantalla de carga mientras la creas.
Para demostrar este proceso, las siguientes LocalScript referencias se refieren a ScreenGui una Pantalla de carga llamada dentro de ReplicatedFirst , luego elimina la pantalla de carga predeterminada para que la única pantalla de carga que un usuario pueda ver sea tu 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-- Eliminar la pantalla de carga predeterminadaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Fuerza a que la pantalla aparezca durante un número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Añadir animaciones
Además de las pantallas de carga estáticas personalizadas, puedes agregar animaciones para mejorar la pantalla de carga y indicar el progreso de carga.La manera más fácil de hacer esto es crear un elemento de interfaz de usuario, como un TextLabel o ImageLabel , luego animarlo usando TweenService .Por ejemplo, el siguiente ejemplo de código crea un nuevo ScreenGui con un hijo ImageLabel , elimina la pantalla de carga predeterminada, luego TweenService gira el ImageLabel continuamente hasta que se cargue la experiencia:
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-- Eliminar 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) -- Fuerza a que la pantalla aparezca durante un número mínimo de segundosif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()