一个 徽章 是您可以在玩家达到游戏内目标时赠送给他们的特殊奖励,例如完成一个困难的目标或玩了一定的时间。玩家一旦获得徽章,它会显示在他们的库存的 徽章 类别中。

创建徽章
您可以在每个您拥有的游戏中,每24小时(GMT)免费创建最多5个徽章。如果您想在24小时内创建更多徽章,每个额外的徽章将花费100 Robux。
要创建徽章:
导航到 创作者仪表板。
将鼠标悬停在游戏的缩略图上,点击 ⋯ 按钮,然后选择 创建徽章。

在创建页面上,点击 上传图片 按钮,然后选择/确认您想用作徽章图标的图片。在创建用于徽章的图片时,请考虑以下几点:
使用 512×512 像素 的模板。
上传过程会将徽章图像裁剪成圆形图标,因此请避免将重要细节放在圆形边界之外。


完成以下字段:
- 名称 — 徽章的标题。
- 描述 — 玩家可以做什么来获得徽章的描述。
- 徽章已启用 — 徽章创建时是否启用。禁用的徽章不会显示在游戏主页的 徽章 部分,玩家无法获得。
点击 创建徽章 按钮。新徽章将在 创作者仪表板 的 参与度 ⟩ 徽章 部分显示。如果新徽章已启用,它也会在游戏主页的 徽章 部分显示。

游戏主页上的徽章
重新排序徽章
当徽章首次创建时,它会被放置在徽章列表的末尾。您可以使用拖放界面一次重新排序最多50个徽章。
要重新排序徽章:
导航到相关游戏。
在侧边面板的 参与度 标题下,导航到 徽章 页面。
选择 重新排序 以导航到重新排序页面。

在重新排序页面上,拖放徽章以按首选顺序排列。

选择 保存 以保存此顺序。指定的顺序现在应出现在游戏详情页面上。
脚本徽章
常见的徽章脚本工作流程包括 授予徽章、检查玩家是否之前 获得 过徽章,以及 获取徽章信息。
查找徽章 ID
徽章的 ID 是其唯一标识符。在实现诸如 授予徽章 给玩家的工作流程时,您需要此 ID。
在 创作者仪表板 上,导航到相关游戏的 徽章 部分,位于 参与度 下。
将鼠标悬停在徽章的缩略图上,点击 ⋯ 按钮,然后从上下文菜单中选择 复制资产 ID。

授予徽章
您可以通过在服务器端的 Script 中调用 BadgeService:AwardBadgeAsync() 方法,在游戏中授予玩家徽章。BadgeService:GetBadgeInfoAsync() 返回徽章的属性,包括 IsEnabled,它确认徽章是否可以授予玩家。您可以在 创作者仪表板 的 配置徽章 表单中启用或禁用徽章。
以下是一个安全的授予徽章给玩家的函数示例。
local BadgeService = game:GetService("BadgeService")
local function awardBadge(player, badgeId)
-- 获取徽章信息
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
-- 确认徽章可以被授予
if badgeInfo.IsEnabled then
-- 授予徽章
local awarded, errorMessage = pcall(BadgeService.AwardBadgeAsync, BadgeService, player.UserId, badgeId)
if not awarded then
warn("授予徽章时出错:", errorMessage)
end
end
else
warn("获取徽章信息时出错: " .. badgeInfo)
end
end检查获得的徽章
以下脚本检查任何玩家何时进入游戏,然后使用 BadgeService:UserHasBadgeAsync() 方法验证该玩家是否拥有与变量 BADGE_ID 中设置的 匹配 ID 的徽章。您还可以使用 BadgeService:GetUserBadgesAsync() 方法批量验证徽章所有权。
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local BADGE_ID = 00000000 -- 将此更改为您的徽章 ID
local function onPlayerAdded(player)
-- 检查玩家是否拥有徽章
local success, hasBadge = pcall(BadgeService.UserHasBadgeAsync, BadgeService, player.UserId, BADGE_ID)
-- 如果发生错误,发出警告并退出函数
if not success then
warn("检查玩家是否拥有徽章时出错")
return
end
if hasBadge then
-- 根据需要处理玩家的徽章所有权
end
end
-- 将 "PlayerAdded" 事件连接到 "onPlayerAdded()" 函数
Players.PlayerAdded:Connect(onPlayerAdded)获取徽章信息
要获取徽章的信息,例如其描述或图标资产 ID,请使用 徽章 ID 调用 BadgeService:GetBadgeInfoAsync() 方法。例如:
local BadgeService = game:GetService("BadgeService")
local BADGE_ID = 00000000 -- 将此更改为您的徽章 ID
-- 获取徽章信息
local success, result = pcall(BadgeService.GetBadgeInfoAsync, BadgeService, BADGE_ID)
-- 输出信息
if success then
print("徽章:", result.Name)
print("已启用:", result.IsEnabled)
print("描述:", result.Description)
print("图标:", "rbxassetid://" .. result.IconImageId)
else
warn("获取徽章信息时出错:", result)
end