Roblox wyświetla domyślną stronę ładowania, gdy użytkownicy łączą się z doświadczeniem, ale możesz dostosować swoje doświadczenie za pomocą niestatycznej lub animowanej niestandardowej strony ładowania zawierającej treści statyczne lub animowane.
Wyświetlanie niestandardowych ekranów ładowania
Aby wyświetlić niestandardowy ekran ładowania, możesz zaprojektować instancję ScreenGui bezpośrednio w obrębie LocalScript lub odwołać się do obiektu ScreenGui w swojej przestrzeni roboczej.Obie opcje wykorzystują ReplicatedFirst, ponieważ ta usługa replikuje instancje do klientów przed rozpoczęciem replikacji czegokolwiek innego.Zapewnia to, że ekran ładowania jest pierwszą rzeczą, jaką widzą użytkownicy, gdy wchodzą do twojego doświadczenia.
Projektowanie w ramach LocalScripts
Aby zaprojektować i wyświetlić niestandardowy ekran ładowania:
- W ReplicatedFirst , utwórz LocalScript.
- Użyj następującego przykładu kodu, aby utworzyć i dostosować obiekt ScreenGui.Możesz modyfikować następujący kod za pomocą własnych wartości, aby stworzyć swój projekt:
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-- Zastąp wartości ScreenGui posiadaćlocal 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-- Usuń domyślną stronę ładowaniaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Wymuszaj wyświetlanie ekranu przez minimalną liczbę sekundif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Referencyjne ScreenGuis
Zamiast tworzyć ScreenGui poprzez LocalScript , możesz również odwołać się do istniejącego ScreenGui bezpośrednio w swojej przestrzeni roboczej.Upewnij się, że twoje doświadczenie obejmuje ScreenGui w ciągu ReplicatedFirst i że ScreenGui obejmuje elementy interfejsu użytkownika, takie jak TextLabels i ImageLabels, a następnie ustaw je jako ekran ładowania, odwołując się do niego w ramach LocalScript .Ta metoda pozwala łatwo wyświetlać ekran ładowania, gdy go tworzysz.
Aby pokazać ten proces, następujące LocalScript odniesienia wymieniają ScreenGui nazwane Ekran ładowania w ReplicatedFirst , a następnie usuwają domyślną stronę ładowania, tak że jedyną stroną ładowania, którą może zobaczyć użytkownik, jest twoja własna niestandardowa strona ładowania:
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-- Usuń domyślną stronę ładowaniaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Wymuszaj wyświetlanie ekranu przez minimalną liczbę sekundif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Dodaj animacje
Oprócz statycznych ekranów ładowania niestandardowych możesz dodać animacje, aby ulepszyć ekran ładowania i wskazać postęp ładowania.Najłatwiejszym sposobem na zrobienie tego jest stworzenie elementu interfejsu użytkownika, takiego jak TextLabel lub ImageLabel, a następnie jego animowanie za pomocą TweenService.Na przykład następujący przykład kodu tworzy nową ScreenGui z dzieckiem ImageLabel , usuwa domyślną stronę ładowania, a następnie TweenService obraca ImageLabel nieprzerwanie, dopóki nie zostanie załadowane doświadczenie:
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-- Usuń domyślną stronę ładowaniaReplicatedFirst: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) -- Wymuszaj wyświetlanie ekranu przez minimalną liczbę sekundif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()