徽章是您可以赠送给玩家,当玩家在您的体验中达成目标时,例如完成一个难以达成的目标或玩一定时间。 一旦玩家获得徽章,它就会显示在其库存的 徽章 类别中。
创建徽章
在 24 小时 (GMT) 期间,您可以为您拥有的每个体验创建最多 5 枚徽章。如果您想在 24 小时内创建更多徽章,每个额外的徽章都会花费 100 Robux。
要创建徽章:
导航到创建者仪表板。
找到关联的体验,点击其缩略图角落中的 ⋯ ,然后选择 创建徽章 。
在创建页面上,单击 上传图像 按钮,然后选择/确认您想要使用的图像作为徽章的标志。当创建用于徽章的图像时,请考虑以下几点:
使用 512×512 像素 的模板。
上传过程会将徽章图像修剪和裁剪为圆形标志,因此请避免将重要细节放在圆形边界之外。
完成以下字段:
- 名称 — 徽章的标题。
- 描述 — 玩家可以用什么赚取徽章的。
- 徽章已启用 — 是否启用徽章,在它创建时是否会显示。禁用徽章不会显示在体验主页的 徽章 部分,无法由玩家赚取。
点击 创建徽章 按钮。新的徽章显示在 参与 → 徽章 部分在创建者仪表板上。如果新的徽章已启用,它也会在体验的主页上显示在1>徽章1>部分。
脚本徽章
常见的徽章脚本工作流程包括颁发徽章、检查玩家是否在您的体验中以前获得了一个徽章,并且获取徽章信息。
正在定位徽章 ID
徽章的ID是其唯一标识。你在授予徽章等工作流程时需要这个ID。
在创建者仪表板上,导航到关联的体验的 徽章 部分。
点击 ⋯ 按钮获得徽章,然后选择 复制资产ID 。
评分
您可以在服务器端的 BadgeService:AwardBadge() 中调用 Script 方法,为玩家授予徽章。 BadgeService:GetBadgeInfoAsync() 返回徽章
以下是奖励玩家的安全功能的例子。
local BadgeService = game:GetService("BadgeService")
local function awardBadge(player, badgeId)
-- 获取徽章信息
local success, badgeInfo = pcall(BadgeService.GetBadgeInfoAsync, BadgeService, badgeId)
if success then
-- 确认徽章可以被授予
if badgeInfo.IsEnabled then
-- 奖励徽章
local awarded, errorMessage = pcall(BadgeService.AwardBadge, BadgeService, player.UserId, badgeId)
if not awarded then
warn("Error while awarding badge:", errorMessage)
end
end
else
warn("Error while fetching badge info!")
end
end
检查已获得徽章
以下脚本检查任何玩家何时进入体验,然后使用 BadgeService:UserHasBadgeAsync() 方法验证该玩家是否拥有在变量 ADGE_ID 中设置的匹配 ID 的徽章。你还可以使用 BADGE_ID 方法来验证徽章的所
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("Error while checking if player has badge")
return
end
if hasBadge then
-- 根据需要处理玩家的徽章所有权
end
end
-- 将“PlayerAdded”事件连接到“onPlayerAdded()”函数
Players.PlayerAdded:Connect(onPlayerAdded)
获取徽章信息
要获取徽章,例如其描述或图标资产 ID,请使用 BadgeService:GetBadgeInfoAsync() 方法,并使用 徽章 ID 。例如:
local BadgeService = game:GetService("BadgeService")local BADGE_ID = 00000000 -- 将其更改为您的徽章 ID-- 获取徽章信息local success, result = pcall(BadgeService.GetBadgeInfoAsync, BadgeService, BADGE_ID)-- 输出信息if success thenprint("Badge:", result.Name)print("Enabled:", result.IsEnabled)print("Description:", result.Description)print("Icon:", "rbxassetid://" .. result.IconImageId)elsewarn("Error while fetching badge info:", result)end