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

创建徽章
您可以在每个您拥有的游戏中,每个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:CheckUserBadgesAsync() 方法批量验证徽章所有权。
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 thenprint("徽章:", result.Name)print("已启用:", result.IsEnabled)print("描述:", result.Description)print("图标:", "rbxassetid://" .. result.IconImageId)elsewarn("获取徽章信息时出错:", result)end