Roblox có một hệ thống bảng xếp hạng built-in để bạn có thể hiển thị thông tin người dùng như điểm số, tiền tệ hoặc thời gian nhanh nhất trong một cuộc đua.
Tạo bảng xếp hạng
Để cài đặt bảng xếp hạng và thêm người chơi khi họ tham gia trải nghiệm:
Tạo một Script mới trong ServerScriptService và đặt tên nó là Bảng xếp hạng .
Trong script, kết nối một chức năng với sự kiện PlayerAdded .
local Players = game:GetService("Players")local function leaderboardSetup(player)end-- Kết nối hàm "leaderboardSetup()" với sự kiện "PlayerAdded"Players.PlayerAdded:Connect(leaderboardSetup)Trong một chức năng kết nối, tạo một ví dụ / trường hợptượng mới Folder , tên nó là leaderstats và làm cho nó là cha của người chơi.
local Players = game:GetService("Players")local function leaderboardSetup(player)local leaderstats = Instance.new("Folder")leaderstats.Name = "leaderstats"leaderstats.Parent = playerend-- Kết nối hàm "leaderboardSetup()" với sự kiện "PlayerAdded"Players.PlayerAdded:Connect(leaderboardSetup)
Thêm Chỉ số
Leaderboards use value type objects to store and display player stats. This script will show a người chơi's gold using an IntValue , a placeholder for an integer.
Trong chức năng leaderboardSetup(), thêm dòng 8 đến 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
-- Kết nối hàm "leaderboardSetup()" với sự kiện "PlayerAdded"
Players.PlayerAdded:Connect(leaderboardSetup)
Các dòng này hoàn thành những gì theo dõi:
Một IntValue instance được tạo.
Cấu hình của ví dụ / trường hợp's Name đã được đặt thành "Gold" . Đây chính xác là cách stat sẽ xuất hiện trên bảng xếp hạng.
Giá trị ban đầu của chỉ số Value được đặt thành 0 . Điều này có thể được thiết lập cho bất kỳ giá trị bạn muốn, bao gồm một giá trị được lưu trong một data store nếu bạn đang thực hiện các bảng xếp hạng persist.
Instância là con của thư mục leaderstats thêm nó vào bảng xếp hạng. Khi một người chơi nhập vào trải nghiệm, tên của họ xuất hiện trên bảng.
Cập nhật Chỉ số
Để cập nhật thống kê của một người chơi trên bảng xếp hạng của họ, thay đổi thuộc tính Value của thống kê đó trong thư mục leaderstats của họ. Ví dụ, bạn có thể kết hợp thẻ Script để gắn vào
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
-- Phá huỷ thẻ pickup
goldChunk:Destroy()
-- Cập nhật chỉ số bảng xếp hạng của người chơi
goldStat.Value += 10
end
end
goldChunk.Touched:Connect(onPartTouch)
Đặt hàng Thống kê
Có ba cách để kiểm tra thứ tự các chỉ số trên bảng xếp hạng:
- Thêm các chỉ số theo thứ tự bạn muốn chúng xuất hiện.
- Thêm một con cái BoolValue có tên IsPrimary vào trang thống kê và đặt giá trị của nó thành true để đặt con cái trên bảng xếp hạng.
- Thêm một con cái NumberValue có tên Priority vào trang thống kê và thiết lập giá trị của nó thành một số. Các con cái không có trọng tâm sớm hơn trên bảng xếp hạng. Các con cái không có trọng tâm có một giá trị mặc định là 0.
Các ví dụ mã này cho thấy cách thêm một giá trị IsPrimary vào một stat:
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)
Ẩn bảng xếp hạng
Để ẩn bảng xếp hạng, chẳng hạn như trên màn hình menu hoặc trong một cảnh cắt, đặt một LocalScript trong StarterGui hoặc StarterPlayerScripts chứa một gọi 2>Class.StarterGui:SetCoreGuiEnabled()|StarterGui2> .
local StarterGui = game:GetService("StarterGui")StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)