Roblox zeigt einen standardmäßigen Ladebildschirm an, wenn Benutzer sich mit einem Spiel verbinden, aber du kannst dein Spiel mit einem benutzerdefinierten Ladebildschirm personalisieren, der statische oder animierte Inhalte enthält.
Implementierung
Um einen benutzerdefinierten Ladebildschirm anzuzeigen, kannst du entweder eine ScreenGui-Instanz direkt innerhalb eines LocalScript entwerfen oder auf ein ScreenGui-Objekt in deiner Platzhierarchie verweisen. Beide Optionen nutzen ReplicatedFirst, da dieser Dienst Instanzen an Clients repliziert, bevor alles andere repliziert wird. Dies stellt sicher, dass dein Ladebildschirm das Erste ist, was Benutzer sehen, wenn sie dein Spiel betreten.
Vom Skript
Um einen benutzerdefinierten Ladebildschirm vollständig von einem LocalScript aus zu gestalten und anzuzeigen:
- Erstelle ein LocalScript in ReplicatedFirst.
- Füge den folgenden Code-Sample ein, um ein ScreenGui-Objekt zu erstellen und anzupassen. Du kannst den folgenden Code mit deinen eigenen Werten anpassen, um dein Design zu erstellen.
Skript-erstellter Ladebildschirmlocal 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-- Ersetze die ScreenGui-Werte durch deine eigenenlocal 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 = "Laden"textLabel.TextSize = 32textLabel.Parent = loadingScreen-- Entferne den standardmäßigen LadebildschirmReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Zwinge den benutzerdefinierten Ladebildschirm, mindestens 5 Sekunden lang anzuzeigenif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()
Von vorhandener GUI
Anstatt einen Ladebildschirm ScreenGui vollständig über ein LocalScript zu erstellen, kannst du auch auf ein vorhandenes ScreenGui in deiner Platzhierarchie verweisen. Stelle sicher, dass dein Spiel das referenzierte ScreenGui innerhalb von ReplicatedFirst enthält und dass das ScreenGui UI-Elemente wie TextLabels und ImageLabels umfasst.
Um diesen Prozess zu demonstrieren, verweist das folgende LocalScript auf ein ScreenGui namens LoadingScreen innerhalb von ReplicatedFirst und entfernt dann den standardmäßigen Ladebildschirm, sodass der einzige Ladebildschirm, den ein Spieler sehen kann, dein eigener benutzerdefinierter Ladebildschirm ist.
Existierenden Ladebildschirm referenzierenlocal 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-- Entferne den standardmäßigen LadebildschirmReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Zwinge den Bildschirm, mindestens einige Sekunden lang angezeigt zu werdenif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()end
Animationen hinzufügen
Neben statischen benutzerdefinierten Ladebildschirmen kannst du Animationen hinzufügen, um den Ladebildschirm zu verbessern und den Ladefortschritt anzuzeigen. Der einfachste Weg, dies zu tun, besteht darin, ein UI-Element zu erstellen, z.B. ein TextLabel oder ImageLabel, und es dann mit TweenService zu animieren. Zum Beispiel erstellt der folgende Code-Sample ein neues ScreenGui mit einem untergeordneten ImageLabel, entfernt den standardmäßigen Ladebildschirm und lässt dann TweenService die zentralen Elemente einblenden und rotieren, bis das Spiel geladen ist.
Skript-erstellter Ladebildschirm (animiert)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 = "Laden"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-- Entferne den standardmäßigen LadebildschirmReplicatedFirst:RemoveDefaultLoadingScreen()-- Starte Fade-In-Animationlocal 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()-- Starte Rotationsanimationlocal tweenInfo = TweenInfo.new(4, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1)local tween = TweenService:Create(loadingRing, tweenInfo, {Rotation = 360})tween:Play()task.wait(5) -- Zwinge den Bildschirm, mindestens einige Sekunden lang angezeigt zu werdenif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()