Roblox wyświetla domyślny ekran ładowania, kiedy użytkownicy łączą się z grą, ale możesz spersonalizować swoją grę, tworząc niestandardowy ekran ładowania, który zawiera treści statyczne lub animowane.
Implementacja
Aby wyświetlić niestandardowy ekran ładowania, możesz albo zaprojektować instancję ScreenGui bezpośrednio w LocalScript, albo możesz odwołać się do obiektu ScreenGui w hierarchii swojego miejsca. Obie opcje wykorzystują ReplicatedFirst, ponieważ ta usługa replikuje instancje do klientów przed replikowaniem czegokolwiek innego. Gwarantuje to, że ekran ładowania jest pierwszą rzeczą, którą użytkownicy widzą, kiedy wchodzą do twojej gry.
Z poziomu skryptu
Aby zaprojektować i wyświetlić niestandardowy ekran ładowania całkowicie z poziomu LocalScript:
- W ReplicatedFirst utwórz LocalScript.
- Wklej poniższy fragment kodu, aby utworzyć i dostosować obiekt ScreenGui. Możesz zmodyfikować poniższy kod, wprowadzając własne wartości, aby stworzyć swój projekt.
Ekran ładowania stworzony przez skryptlocal 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-- Zamień wartości ScreenGui swoimi własnymilocal 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 = "Ładowanie"textLabel.TextSize = 32textLabel.Parent = loadingScreen-- Usuń domyślny ekran ładowaniaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Wymuś, aby niestandardowy ekran ładowania pojawił się na minimum przez 5 sekundif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()
Z istniejącego GUI
Zamiast tworzyć ekran ładowania ScreenGui całkowicie przez LocalScript, możesz również odwołać się do istniejącego ScreenGui w hierarchii swojego miejsca. Upewnij się, że twoja gra zawiera odwoływany ScreenGui w ReplicatedFirst oraz że ScreenGui zawiera elementy UI, takie jak TextLabels i ImageLabels.
Aby zademonstrować ten proces, poniższy LocalScript odnosi się do ScreenGui o nazwie LoadingScreen w ReplicatedFirst, a następnie usuwa domyślny ekran ładowania, tak aby jedynym ekranem ładowania, jaki gracz może zobaczyć, był twój niestandardowy ekran ładowania.
Referencja istniejącego ekranu ładowanialocal 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-- Usuń domyślny ekran ładowaniaReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Wymuś, aby ekran pojawił się na minimum przez 5 sekundif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()end
Dodaj animacje
Oprócz statycznych niestandardowych ekranów ładowania, możesz dodać animacje, aby ulepszyć ekran ładowania i wskazać postęp ładowania. Najłatwiejszym sposobem na to jest stworzenie elementu UI, takiego jak TextLabel lub ImageLabel, a następnie animowanie go z użyciem TweenService. Na przykład, poniższy fragment kodu tworzy nowy ScreenGui z dzieckiem ImageLabel, usuwa domyślny ekran ładowania, a następnie TweenService powoduje, że centralne elementy stopniowo się pojawiają i obracają, aż gra się załaduje.
Ekran ładowania stworzony przez skrypt (animowany)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 = "Ładowanie"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-- Usuń domyślny ekran ładowaniaReplicatedFirst:RemoveDefaultLoadingScreen()-- Rozpocznij i uruchom fade-in tweenslocal 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()-- Rozpocznij i uruchom rotation tweenlocal tweenInfo = TweenInfo.new(4, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1)local tween = TweenService:Create(loadingRing, tweenInfo, {Rotation = 360})tween:Play()task.wait(5) -- Wymuś, aby ekran pojawił się na minimum przez 5 sekundif not game:IsLoaded() thengame.Loaded:Wait()endloadingScreen:Destroy()