Roblox visualizza una schermata di caricamento predefinita quando gli utenti si connettono a un gioco, ma puoi personalizzare il tuo gioco con una schermata di caricamento personalizzata che contiene contenuti statici o animati.
Implementazione
Per visualizzare una schermata di caricamento personalizzata, puoi progettare direttamente un'istanza di ScreenGui all'interno di uno LocalScript, oppure puoi fare riferimento a un oggetto ScreenGui nella gerarchia del tuo posto. Entrambe le opzioni utilizzano ReplicatedFirst, poiché questo servizio replica le istanze ai client prima che qualsiasi altra cosa sia replicata. Questo garantisce che la tua schermata di caricamento sia la prima cosa che gli utenti vedono quando entrano nel tuo gioco.
Da script
Per progettare e visualizzare una schermata di caricamento personalizzata interamente da uno LocalScript:
- In ReplicatedFirst, crea uno LocalScript.
- Incolla il seguente codice campione per creare e personalizzare un oggetto ScreenGui. Puoi modificare il seguente codice con i tuoi valori per creare il tuo design.
Schermata di caricamento creata dallo scriptlocal Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local loadingScreen = Instance.new("ScreenGui")loadingScreen.IgnoreGuiInset = trueloadingScreen.Parent = playerGui-- Sostituisci i valori della ScreenGui con i tuoilocal textLabel = Instance.new("TextLabel")textLabel.Size = UDim2.new(1, 0, 1, 0)textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)textLabel.Font = Enum.Font.DenkOnetextLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)textLabel.Text = "Caricamento"textLabel.TextSize = 32textLabel.Parent = loadingScreen-- Rimuovi la schermata di caricamento predefinitaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Forza la schermata di caricamento personalizzata a apparire per un tempo minimoif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()
Da GUI esistente
Invece di creare una schermata di caricamento ScreenGui interamente attraverso uno LocalScript, puoi anche fare riferimento a un ScreenGui esistente nella gerarchia del tuo posto. Assicurati che il tuo gioco includa la ScreenGui referenziata all'interno di ReplicatedFirst e che il ScreenGui includa elementi UI come TextLabels e ImageLabels.
Per dimostrare questo processo, il seguente LocalScript fa riferimento a un ScreenGui denominato LoadingScreen all'interno di ReplicatedFirst, quindi rimuove la schermata di caricamento predefinita in modo che l'unica schermata di caricamento che un giocatore possa vedere sia la tua schermata di caricamento personalizzata.
Riferimento a una schermata di caricamento esistentelocal Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local loadingScreen = ReplicatedFirst:FindFirstChild("LoadingScreen")if loadingScreen thenloadingScreen.IgnoreGuiInset = trueloadingScreen.Parent = playerGui-- Rimuovi la schermata di caricamento predefinitaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Forza la schermata a apparire per un numero minimo di secondiif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()end
Aggiungi animazioni
Oltre alle schermate di caricamento statiche personalizzate, puoi aggiungere animazioni per migliorare la schermata di caricamento e indicare il progresso del caricamento. Il modo più semplice per farlo è creare un elemento UI, come un TextLabel o un ImageLabel, e poi animarlo utilizzando TweenService. Ad esempio, il seguente codice campione crea un nuovo ScreenGui con un ImageLabel figlio, rimuove la schermata di caricamento predefinita, quindi TweenService sfuma e ruota gli elementi centrali fino a quando il gioco non viene caricato.
Schermata di caricamento creata dallo script (Animata)local Players = game:GetService("Players")local ReplicatedFirst = game:GetService("ReplicatedFirst")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player:WaitForChild("PlayerGui")local loadingScreen = Instance.new("ScreenGui")loadingScreen.IgnoreGuiInset = trueloadingScreen.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.DenkOnetextLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)textLabel.Text = "Caricamento"textLabel.TextSize = 32textLabel.TextTransparency = 1textLabel.Parent = loadingScreenlocal 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.ImageTransparency = 1loadingRing.Parent = loadingScreen-- Rimuovi la schermata di caricamento predefinitaReplicatedFirst:RemoveDefaultLoadingScreen()-- Inizia e avvia le transizioni di sfumaturalocal fadeTweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, false, 2)local fadeTween1 = TweenService:Create(textLabel, fadeTweenInfo, {TextTransparency = 0})local fadeTween2 = TweenService:Create(loadingRing, fadeTweenInfo, {ImageTransparency = 0})fadeTween1:Play()fadeTween2:Play()-- Inizia e avvia la transizione di rotazionelocal 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 la schermata a apparire per un numero minimo di secondiif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()