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)
スタッツの順序
リーダーボード内のスタッツの順序を制御する方法は3つあります:
- 表示したい順序でスタッツを追加します。
- スタッツに子 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)
リーダーボードを非表示にする
メニュー画面やカットシーンの間などでリーダーボードを非表示にするには、StarterGui または StarterPlayerScripts 内に LocalScript を配置し、StarterGui を呼び出します。
local StarterGui = game:GetService("StarterGui")StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)