Roblox 提供了内置的 排行榜系统,允许您显示用户信息,例如分数、货币或比赛中最快的时间。

设置排行榜
要设置排行榜并在玩家进入游戏时添加玩家:
在 ServerScriptService 中创建一个新的 Script,并将其命名为 Leaderboard。

在脚本中,将一个函数连接到 PlayerAdded 事件。
local Players = game:GetService("Players")local function leaderboardSetup(player)endPlayers.PlayerAdded:Connect(leaderboardSetup)在连接的函数内部,创建一个新的 Folder 实例,将其命名为 leaderstats,并将其作为父级添加到玩家。
local Players = game:GetService("Players")local function leaderboardSetup(player)local leaderstats = Instance.new("Folder")leaderstats.Name = "leaderstats"leaderstats.Parent = playerendPlayers.PlayerAdded:Connect(leaderboardSetup)
添加统计数据
排行榜使用 值类型对象 来存储和显示玩家统计信息。此脚本将使用 IntValue 显示玩家的金币,这是一个整数的占位符。
在 leaderboardSetup() 函数中,添加第 8 行到第 11 行:
local Players = game:GetService("Players")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = leaderstats
end
Players.PlayerAdded:Connect(leaderboardSetup)
这些行完成以下操作:
创建一个 IntValue 实例。
将实例的 Name 设置为 "Gold"。这就是统计信息在排行榜上显示的名称。

将实例作为子项添加到 leaderstats 文件夹,便于将其添加到排行榜。当玩家进入游戏时,他们的名字将出现在排行榜上。

更新统计数据
要更新玩家的排行榜统计数据,请修改该统计数据在其 leaderstats 文件夹中的 Value 属性。例如,您可以将以下 Script 绑定到任何拾取对象,以增加玩家收集的 Gold 统计数据。
local Players = game:GetService("Players")
local goldChunk = script.Parent
local function onPartTouch(otherPart)
local partParent = otherPart.Parent
local player = Players:GetPlayerFromCharacter(partParent)
local leaderstats = player and player:FindFirstChild("leaderstats")
local goldStat = leaderstats and leaderstats:FindFirstChild("Gold")
if goldStat then
-- 销毁拾取物
goldChunk:Destroy()
-- 更新玩家的排行榜统计数据
goldStat.Value += 10
end
end
goldChunk.Touched:Connect(onPartTouch)
排序统计数据
有三种方法可以控制排行榜中统计信息的顺序:
- 按希望的顺序添加统计数据。
以下代码示例演示如何向统计数据添加 IsPrimary 值:
local Players = game:GetService("Players")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = leaderstats
local isPrimary = Instance.new("BoolValue")
isPrimary.Name = "IsPrimary"
isPrimary.Value = true
isPrimary.Parent = gold
end
Players.PlayerAdded:Connect(leaderboardSetup)
隐藏排行榜
要隐藏排行榜,例如在菜单屏幕上或在过场动画期间,可以在 StarterGui 或 StarterPlayerScripts 中放置一个 LocalScript,其中包含对 StarterGui 的调用。
local StarterGui = game:GetService("StarterGui")StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)