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 、整数のプレースホルダーを使用してプレイヤーのゴールドを表示します。
In the 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)
これらの行はフォロー中のことを達成します:
Class.IntValue インスタンスが作成されます。
インスタンスの Name は "Gold" に設定されています。これは、統計がリーダーボードに表示される方法です。
ステータスの初期の Value は 0 に設定されます。これは、データストア に保存された値を含む任意の値に設定できます。これは、2> 持続的なリーダーボード2> を実装している場合、または 5>05> 以下の任意の値を設定している場合に設定できます。
インスタンスは、leaderstats フォルダに親を付け、ボードに表示されます。プレイヤーがエクスペリエンスに入ると、ボードにその名前が表示されます。
統計を更新する
プレイヤーのリーダーボード統計を更新するには、その統計の Value フォルダ内の leaderstats プロパティを変更します。たとえば、Script を任意のピックアップオブジェクトに付けることで、プレイヤーが集める 2>ゴールド2> の統計を増加させること
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)
リーダーボードを非表示にする
リーダーボードを非表示にするには、メニュー画面やカットシーンなどで LocalScript を置くか、 StarterGui を含む StarterPlayerScripts 内の 2>Class.LocalScript2> を配置します。
local StarterGui = game:GetService("StarterGui")StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)