Roblox 有一个内置的 排行榜系统 ,可以让您显示用户信息,例如得分、货币或最快时间在比赛中。
设置排行榜
要设置排行榜,并在玩家进入体验时添加玩家:
在 Script 中创建一个新的 ServerScriptService 并命名它为 排行榜。
在脚本中,连接一个函数到 PlayerAdded 事件。
local Players = game:GetService("Players")local function leaderboardSetup(player)end-- 连接 "leaderboardSetup()" 函数到 "PlayerAdded" 事件Players.PlayerAdded:Connect(leaderboardSetup)在连接的函数内,创建一个新的 Folder 实例,命名它 leaderstats,并将其作为父级给玩家。
local Players = game:GetService("Players")local function leaderboardSetup(player)local leaderstats = Instance.new("Folder")leaderstats.Name = "leaderstats"leaderstats.Parent = playerend-- 连接 "leaderboardSetup()" 函数到 "PlayerAdded" 事件Players.PlayerAdded:Connect(leaderboardSetup)
添加统计
排行榜使用 value type objects 来存储和显示玩家统计。此脚本将显示一个玩家的金币使用一个 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
-- 连接 "leaderboardSetup()" 函数到 "PlayerAdded" 事件
Players.PlayerAdded:Connect(leaderboardSetup)
这些线完成以关注中/正在关注任务:
一个 IntValue 实例创建。
实例的 Name 设置为 "Gold" 。这正是统计数据会在排行榜上显示的方式。
实例是父级 leaderstats 文件,它将其添加到排行榜。当玩家进入体验时,他们的名字会出现在板上。
更新统计信息
要更新玩家的排行榜统计,请在其 Value 文件夹内的 leaderstats 属性改变该属性的 Script 以增加玩家收集到的 2> 金币2> 属性。例如,您可以将以下 5>Class.Script5> 附加到任何 8>p
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)
订购统计
有三种方法来控制排行榜上的统计数据的顺序:
- 将统计数据添加在您想要显示它们的顺序。
- 在统计中添加一个名为 NumberValue 的子 ,其中 Priority 为子 ,设置其值为整数。更高的优先级值在排行榜上的前几个位置显示。没有优先级的统计值的统计值为 0 。
此代码示例显示如何将 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)
隐藏排行榜
要隐藏排行榜,例如在菜单屏幕上或在切换场景中,请将 LocalScript 放置在 StarterGui 或 StarterPlayerScripts 中,其中包含调用 2>Class.StarterGui:SetCoreGuiEnabled()|StarterGui2> 。
local StarterGui = game:GetService("StarterGui")StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)