Roblox visualizza uno schermo di caricamento predefinito quando gli utenti si connettono a un'esperienza, ma puoi personalizzare la tua esperienza con uno schermo di caricamento personalizzato che contiene contenuti statici o animati.
Mostra schermi di caricamento personalizzati
Per visualizzare uno schermo di caricamento personalizzato, puoi progettare un'istanza ScreenGui direttamente all'interno di un LocalScript , oppure puoi fare riferimento a un oggetto ScreenGui nell'area di lavoro.Entrambe le opzioni utilizzano ReplicatedFirst , poiché questo servizio replica le istanze ai client prima di qualsiasi altra cosa venga replicata.Questo garantisce che la schermata di caricamento sia la prima cosa che gli utenti vedono quando entrano nella tua esperienza.
Progettazione all'interno di LocalScripts
Per progettare e visualizzare una schermata di caricamento personalizzata:
- In ReplicatedFirst , crea un LocalScript.
- Usa il seguente esempio di codice per creare e personalizzare un oggetto ScreenGui.Puoi modificare il seguente codice con i tuoi valori per creare il tuo 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-- Sostituisci i valori di ScreenGui con i Propriolocal 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-- Rimuovi lo schermo di caricamento predefinitoReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Forza lo schermo a apparire per un numero minimo di secondiif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
ScreenGuis di riferimento
Invece di creare il ScreenGui attraverso un LocalScript , puoi anche fare riferimento a un esistente ScreenGui direttamente nel tuo spazio di lavoro.Assicurati che la tua esperienza includa un ScreenGui entro ReplicatedFirst e che il ScreenGui includa elementi dell'interfaccia utente come TextLabels e ImageLabels , quindi impostalo come schermo di caricamento facendo riferimento ad esso all'interno di un LocalScript .Questo metodo ti consente di visualizzare facilmente la schermata di caricamento mentre la crei.
Per dimostrare questo processo, le seguenti LocalScript reference a ScreenGui chiamato LoadingScreen entro ReplicatedFirst , quindi rimuove la schermata di caricamento predefinita in modo che l'unica schermata di caricamento che un utente può vedere sia la tua schermata di caricamento personalizzata:
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-- Rimuovi lo schermo di caricamento predefinitoReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Forza lo schermo a apparire per un numero minimo di secondiif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Aggiungi animazioni
Oltre alle schermate di caricamento statiche personalizzate, puoi aggiungere animazioni per migliorare la schermata di caricamento e indicare il progresso di caricamento.Il modo più semplice per farlo è creare un elemento UI, come un TextLabel o un ImageLabel, quindi animarlo usando TweenService .Ad esempio, il seguente esempio di codice crea una nuova ScreenGui con un figlio ImageLabel , rimuove lo schermo di caricamento predefinito, quindi TweenService ruota il ImageLabel continuamente fino a quando l'esperienza non si carica:
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-- Rimuovi lo schermo di caricamento predefinitoReplicatedFirst: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) -- Forza lo schermo a apparire per un numero minimo di secondiif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()