Roblox hiển thị màn hình tải mặc định khi người dùng kết nối với một trải nghiệm, nhưng bạn có thể cá nhân hóa trải nghiệm của mình với một màn hình tải tùy chỉnh có chứa nội dung tĩnh hoặc di chuyển.
Hiển thị màn hình tải tùy chỉnh
Để hiển thị màn hình tải tùy chỉnh, bạn có thể thiết kế một ScreenGui instance trực tiếp trong một LocalScript , hoặc bạn có thể tham chiếu một ScreenGui đối tượng trong không gian làm việc của bạn.Cả hai lựa chọn sử dụng ReplicatedFirst , vì dịch vụ này sao chép các ví dụ cho khách hàng trước khi bất cứ thứ gì khác được sao chép.Điều này đảm bảo rằng màn hình tải của bạn là thứ đầu tiên người dùng nhìn thấy khi họ vào trải nghiệm của bạn.
Thiết kế trong LocalScripts
Để thiết kế và hiển thị màn hình tải tùy chỉnh:
- Trong ReplicatedFirst , tạo một LocalScript.
- Sử dụng ví dụ mã sau đây để tạo và tùy chỉnh một đối tượng ScreenGui.Bạn có thể sửa đổi mã sau với các giá trị của riêng bạn để tạo thiết kế của bạn:
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-- Thay thế giá trị ScreenGui bằng giá trị của riêng sở hữulocal 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-- Loại bỏ màn hình tải mặc địnhReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Bắt buộc màn hình xuất hiện trong một số giây tối thiểuif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Màn hình tham khảo ScreenGuis
Thay vì tạo ScreenGui thông qua một LocalScript , bạn cũng có thể tham chiếu một ScreenGui hiện có trực tiếp trong không gian làm việc của bạn.Hãy đảm bảo rằng trải nghiệm của bạn bao gồm một ScreenGui bên trong ReplicatedFirst và rằng ScreenGui bao gồm các thành phần UI như TextLabels và ImageLabels, sau đó đặt nó là màn hình tải bằng cách tham chiếu nó trong một LocalScript .Phương pháp này cho phép bạn dễ dàng xem màn hình tải của bạn khi bạn đang tạo nó.
Để minh họa quá trình này, các tham chiếu sau LocalScript đề cập đến ScreenGui có tên Trang tải trong ReplicatedFirst , sau đó xóa trang tải mặc định duy nhất mà người dùng có thể nhìn thấy là trang tải tùy chỉnh của riêng bạn:
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-- Loại bỏ màn hình tải mặc địnhReplicatedFirst:RemoveDefaultLoadingScreen()task.wait(5) -- Bắt buộc màn hình xuất hiện trong một số giây tối thiểuif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()
Thêm hoạt hình
Ngoài các màn hình tải cố định, bạn có thể thêm hoạt họa để cải thiện màn hình tải và chỉ ra tiến trình tải.Cách dễ nhất để làm điều này là tạo một thành phần UI, chẳng hạn như một TextLabel hoặc ImageLabel , sau đó để hoạt hình nó bằng cách sử dụng TweenService .Ví dụ, mẫu mã code sau tạo ra một đoạn mới với một đứa con , xóa màn hình tải mặc định, sau đó xoay liên tục cho đến khi trải nghiệm tải xong:
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-- Loại bỏ màn hình tải mặc địnhReplicatedFirst: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) -- Bắt buộc màn hình xuất hiện trong một số giây tối thiểuif not game:IsLoaded() thengame.Loaded:Wait()endscreenGui:Destroy()