在遊戲中達成目標的玩家可獲得一枚 徽章,這是您可以贈送給玩家的特殊獎勵。當玩家收到徽章時,它會顯示在其道具欄的 徽章 類別中。
創建徽章
您可以在 24 小時 (GMT) 內免費創建 5 個徽章,每個體驗您擁有的。如果您想在 24 小時內創建更多,每個額外的徽章都會費用 100 Robux。
要創建徽章:
導航到創作者控制板。
找到關聯的體驗,點擊其預覽角縮圖中的 ⋯ ,然後選擇 創建徽章 。
在創建頁面上,按一下 上傳圖像 按鈕,然後選擇/確認您想要使用的圖像。當創建一張圖像來使用徽章的圖示時,請考慮以追蹤中內容:
使用 512×512 像素 的樣板。
上傳過程會將徽章圖像裁剪和裁剪為圓形圖示,所以請避免將重要細節放在圓形邊界之外。
完成以下字段:
- 名稱 — 徽章的標題。
- 說明 — 一個玩家可以做到獲得徽章的說明。
- 徽章啟用 — 徽章是否會在創建時啟用。無效的徽章將在體驗主頁的 徽章 區中顯示,並且無法由玩家獲得。
點擊 創建徽章 按鈕。新徽章會在 參與 → 徽章 區域內顯示在1>創作者面板1>上。如果徽章啟用,它也會在體驗的主頁面上顯示在4>徽章4>區域。
錯誤的徽章
常見的徽章指示工作流程包括 給予徽章、檢查玩家是否在您的體驗中以前獲得了一個徽章,並且 獲取徽章信息。
正在定位徽章 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 的徽章。你也可以在發行中使用 Class.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("Error while checking if player has badge")
return
end
if hasBadge then
-- 處理玩家的徽章擁有狀況,如需
end
end
-- 連接 "PlayerAdded" 事件到 "onPlayerAdded()" 函數
Players.PlayerAdded:Connect(onPlayerAdded)
獲得徽章資訊
要取得有關徽章,例如徽章說明或圖示資產 ID,請使用 Class.BadgeService:GetBadgeInfoAsync() 方法,並使用 badge 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