加载屏幕

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

Roblox 在用户连接到游戏时会显示默认的加载屏幕,但您可以使用包含静态或动画内容的自定义加载屏幕来个性化您的游戏。

实现

要显示自定义加载屏幕,您可以直接在 LocalScript 中设计一个 ScreenGui 实例,或者您可以引用放置层次结构中的 ScreenGui 对象。两种选项都使用 ReplicatedFirst,因为该服务在任何其他内容被复制之前将实例复制到客户端。这确保您的加载屏幕是用户进入游戏时看到的第一件事。

从脚本

要完全通过 LocalScript 设计和显示自定义加载屏幕:

  1. ReplicatedFirst 中创建一个 LocalScript
  2. 粘贴以下代码示例以创建和自定义 ScreenGui 对象。您可以使用自己的值修改以下代码以创建您的设计。
脚本创建的加载屏幕

local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local loadingScreen = Instance.new("ScreenGui")
loadingScreen.IgnoreGuiInset = true
loadingScreen.Parent = playerGui
-- 用您自己的值替换 ScreenGui 的值
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.DenkOne
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "加载中"
textLabel.TextSize = 32
textLabel.Parent = loadingScreen
-- 移除默认加载屏幕
ReplicatedFirst:RemoveDefaultLoadingScreen()
task.wait(5) -- 强制自定义加载屏幕至少显示一段时间
if not game:IsLoaded() then
game.Loaded:Wait()
end
loadingScreen:Destroy()

从现有 GUI

您还可以通过引用放置层次结构中的现有 ScreenGui 而不是完全通过 LocalScript 创建加载屏幕。确保您的游戏在 ReplicatedFirst 内包含引用的 ScreenGui,并且 ScreenGui 包含 TextLabelsImageLabels 等 UI 元素。

为了演示这个过程,以下 LocalScript 引用 ReplicatedFirst 中名为 LoadingScreenScreenGui,然后它移除默认的加载屏幕,以便玩家可以看到的唯一加载屏幕是您自己的自定义加载屏幕。

引用现有加载屏幕

local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local loadingScreen = ReplicatedFirst:FindFirstChild("LoadingScreen")
if loadingScreen then
loadingScreen.IgnoreGuiInset = true
loadingScreen.Parent = playerGui
-- 移除默认加载屏幕
ReplicatedFirst:RemoveDefaultLoadingScreen()
task.wait(5) -- 强制屏幕至少显示几秒钟
if not game:IsLoaded() then
game.Loaded:Wait()
end
loadingScreen:Destroy()
end

添加动画

除了静态自定义加载屏幕外,您还可以添加动画来增强加载屏幕并指示加载进度。最简单的方法是创建一个 UI 元素,例如 TextLabelImageLabel,然后使用 TweenService 对其进行动画处理。例如,以下代码示例创建一个新的 ScreenGui,其子元素为 ImageLabel,移除默认加载屏幕,然后 TweenService 使中心元素淡入并旋转,直到游戏加载完成。

脚本创建的加载屏幕(动画)

local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local loadingScreen = Instance.new("ScreenGui")
loadingScreen.IgnoreGuiInset = true
loadingScreen.Parent = playerGui
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.DenkOne
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "加载中"
textLabel.TextSize = 32
textLabel.TextTransparency = 1
textLabel.Parent = loadingScreen
local loadingRing = Instance.new("ImageLabel")
loadingRing.Size = UDim2.new(0, 256, 0, 256)
loadingRing.BackgroundTransparency = 1
loadingRing.Image = "rbxassetid://4965945816"
loadingRing.AnchorPoint = Vector2.new(0.5, 0.5)
loadingRing.Position = UDim2.new(0.5, 0, 0.5, 0)
loadingRing.ImageTransparency = 1
loadingRing.Parent = loadingScreen
-- 移除默认加载屏幕
ReplicatedFirst:RemoveDefaultLoadingScreen()
-- 启动并开始淡入效果
local 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()
-- 启动并开始旋转动画
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) -- 强制屏幕至少显示几秒钟
if not game:IsLoaded() then
game.Loaded:Wait()
end
loadingScreen:Destroy()
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。