编写排行榜

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

在游戏中,玩家会有重要的统计数据需要查看,比如他们收集的物品。这些数字将使用排行榜显示。 排行榜 是Roblox的内置功能,需要启用并自定义脚本。

设置排行榜

每当玩家被添加到体验中时,他们都需要被添加到排行榜以及跟踪个人统计数据的代码。

  1. 在 Explorer 中,在 ServerScriptService 下,创建一个名为 PlayerSetup 的新脚本。在那个脚本中,删除了你好世界线并写了一条描述性评论。

  2. 评论之后,创建一个名为 onPlayerJoi玩家 的自定义函数,其参数名为 player。


    -- 创建一个显示玩家变量的排行榜
    local function onPlayerJoin(player)
    end
  3. onPlayerJoin 中,创建一个名为 leaderstats 的变量,并让它创建一个新的 文件夹 实例。


    local function onPlayerJoin(player)
    local leaderstats = Instance.new("Folder")
    end
  4. 命名新的 文件夹 实例 leaderstats ,并将其作为玩家的父级命名文件夹 leaderstats 让 Roblox Studio 知道创建排行榜。


    local function onPlayerJoin(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player
    end
  5. 在函数结束后,连接 OnPlayerJoinPlayerAdded 事件。每当玩家加入体验时,每位玩家都将获得排行榜。


    local Players = game:GetService("Players")
    local function onPlayerJoin(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player
    end
    Players.PlayerAdded:Connect(onPlayerJoin)

跟踪玩家统计

现在创建了排行榜,它需要向玩家显示这些数字:

  • 金币 - 玩家拥有多少钱。
  • 物品 - 玩家从世界收集了多少物品。
  • 空间 - 玩家在一次可以拥有的最多物品。

这些数字中的每一个都将是一个 IntValue,一个数字的占位符对象。

代码玩家金币

开始编写代码来获取黄金的状态。

  1. OnPlayerJoin 下,在 leaderstats.Parent = player 下,输入 local gold = Instance.new("IntValue") 。这会创建一个新的 IntValue 并将其存储在变量 gold 中。


    local function onPlayerJoin(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player
    local gold = Instance.new("IntValue")
    end
  2. 接下来,键入 gold.Name = "Gold" . 这将给出 IntValue 一个名称,便于您在其他脚本中使用。名称还会显示在排行榜上,以便玩家查看。


    local function onPlayerJoin(player)
    local gold = Instance.new("IntValue")
    gold.Name = "Gold"
    end
  3. 在新行上,输入 gold.Value = 0 . 这将设置玩家的初始值。


    local function onPlayerJoin(player)
    local gold = Instance.new("IntValue")
    gold.Name = "Gold"
    gold.Value = 0
    end
  4. 类型 gold.Parent = leaderstats 。这将将金币的 IntValue 转移到 leaderstats。如果 IntValue 未转移到 leaderstats,玩家将无法看到它。


    local function onPlayerJoin(player)
    local gold = Instance.new("IntValue")
    gold.Name = "Gold"
    gold.Value = 0
    gold.Parent = leaderstats
    end
  5. 播放您的项目,注意右上角出现了一个排行榜。

排除问题的提示

如果您没有看到排行榜,请尝试以关注中/正在关注操作:

  • 确保 .Value 是大写。
  • 确保 IntValue 变量被父辈到排行榜上,如 gold.Parent = leaderstats

代码项目和空间

请记住,状态名称可以是基于游戏设计文档的任何内容。换言之,"Items"取而代之为"Crystals"

  1. 添加一个空行来分开下一个状态,然后通过设置新的 IntValue 方式来创建物品状态,与您为黄金做的一样。


    local function onPlayerJoin(player)
    gold.Parent = leaderstats
    -- 创建物品状态
    local items = Instance.new("IntValue")
    items.Name = "Items"
    items.Value = 0
    items.Parent = leaderstats
    end
  2. 为玩家的包空间创建一个新状态。将 spaces.Value 设置为 2 以便玩家开始体验时只能同时拥有两件物品,鼓励他们尽快购买新的背包。


    local function onPlayerJoin(player)
    items.Parent = leaderstats
    -- 创建空间状态
    local spaces = Instance.new("IntValue")
    spaces.Name = "Spaces"
    spaces.Value = 2
    spaces.Parent = leaderstats
    end
  3. 测试项目。玩家应该有一个显示金币、物品和空间的排行榜。

如果排行榜不出现,请尝试检查以下内容。

  • 如果您无法在排行榜上看到数字,请检查每个 IntValue 是否都属于 leaderstats。
  • 确保每个 IntValue 正确地拼写,如所示
  • 检查玩家添加事件是否位于脚本的底部

完成玩家设置脚本

脚本的完成版本可以在下面参考。


local Players = game:GetService("Players")
-- 创建一个显示玩家变量的排行榜
local function onPlayerJoin(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 items = Instance.new("IntValue")
items.Name = "Items"
items.Value = 0
items.Parent = leaderstats
local spaces = Instance.new("IntValue")
spaces.Name = "Spaces"
spaces.Value = 2
spaces.Parent = leaderstats
end
-- 在玩家添加事件触发时运行 onPlayerJoin
Players.PlayerAdded:Connect(onPlayerJoin)