A 開發者產品 是一個用戶可以多次購買的項目或能力,例如體驗內貨幣、彈藥或藥水。

創建開發者產品
要創建開發者產品:
- 轉到 創作 並選擇一個體驗。
- 轉到 貨幣化 > 開發者產品。
- 點擊 創建開發者產品。
- 上傳一張圖片作為產品圖標。確保圖片不超過 512x512 像素,不包含圓形邊界外的關鍵細節,並且格式為 .jpg、.png 或 .bmp。
- 輸入產品的名稱和描述。
- 設定產品的 Robux 價格。最低價格為 1 Robux,最高價格為 10 億 Robux。
- 點擊 創建開發者產品。
獲取開發者產品 ID
要使用腳本,您需要開發者產品 ID。要獲取產品 ID:
轉到 貨幣化 ⟩ 開發者產品。
懸停於產品縮略圖上,點擊 ⋯ 按鈕,並從上下文菜單中選擇 複製資產 ID。
銷售開發者產品
在銷售開發者產品之前,請確保您已正確處理銷售收據並向用戶授予他們購買的產品。為此,您必須:
- 使用 ProcessReceipt API 來檢查購買收據。ProcessReceipt 自動讀取並確認用戶已在體驗外購買產品。
- 驗證每個收據的 用戶 ID、開發者產品 ID 和收據狀態。
- 如果收據的狀態為 開放,則向用戶授予他們購買的開發者物品。
- 以確認收據的消息響應 ProcessReceipt API,並驗證已授予購買的物品。
您可以以兩種方式銷售開發者產品:
在您的體驗內部
要在體驗內實現和銷售開發者產品,請調用 MarketplaceService 函數。
使用 GetProductInfo 來檢索開發者產品的信息,例如名稱和價格,然後將該產品顯示給用戶。例如,您可以在體驗的市場內銷售該產品。對於開發者產品,第二個參數必須為 Enum.InfoType.Product。
local MarketplaceService = game:GetService("MarketplaceService")
-- 將佔位符 ID 替換為您的開發者產品 ID
local productId = 000000
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- 顯示產品信息
-- 用 UI 代碼替換 print 語句以顯示產品
print("開發者產品名稱: " .. productInfo.Name)
print("Robux 價格: " .. productInfo.PriceInRobux)
print("描述: " .. productInfo.Description)
end
使用 GetDeveloperProductsAsync 來檢索與您的體驗相關的所有開發者產品。此函數返回一個 Pages 對象,您可以檢查和篩選以構建體驗內商店或產品列表 GUI。
local MarketplaceService = game:GetService("MarketplaceService")
local success, developerProducts = pcall(function()
return MarketplaceService:GetDeveloperProductsAsync()
end)
if success and developerProducts then
local firstPage = developerProducts:GetCurrentPage()
for _, developerProduct in firstPage do
-- 用 UI 代碼替換 print 語句以顯示產品
print(field .. ": " .. value)
end
end
使用 PromptProductPurchase 在您的體驗內提示購買產品。當用戶執行按鈕按下或與供應商 NPC 對話等操作時,可以調用此函數。
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- 將佔位符 ID 替換為您的開發者產品 ID
local productId = 000000
local function promptProductPurchase()
local success, errorMessage = pcall(function()
MarketplaceService:PromptProductPurchase(player, productId)
end)
if success then
print("購買提示顯示成功")
end
end
您還可以在 LocalScript 中組合函數。例如,您可以創建一個 UI 元素,例如按鈕或供應商 NPC,然後使用 GetProductInfo() 將現有的開發者產品連接到該元素,檢查產品是否可供銷售,並使用 PromptProductPurchase() 在用戶每次單擊它時提示購買。
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
-- 將佔位符 ID 替換為您的開發者產品 ID
local productId = 000000
-- 當用戶點擊 UI 按鈕時獲取產品信息
button.MouseButton1Click:Connect(function()
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- 檢查產品是否可供銷售
if productInfo.IsForSale then
print("此商品正在出售")
-- 提示產品購買
MarketplaceService:PromptProductPurchase(player, productId)
else
-- 通知產品不在出售
print("該產品當前不在出售。")
end
else
print("獲取產品信息時出錯: " .. tostring(productInfo))
end
end)
在您的體驗外部
要在您的體驗外部啟用開發者產品購買,您必須使用 ProcessReceipt API。在用戶在體驗詳情頁面的 商店 標籤中進行購買後,您必須使用 ProcessReceipt 來確認他們的購買並在他們進入您的體驗後授予他們物品。
測試模式
測試模式 功能幫助您通過模擬在體驗外進行開發者產品購買來驗證您的購買流程。在啟用外部開發者產品銷售之前,您應使用測試模式確保已正確實施 ProcessReceipt。
您在測試模式中上架的開發者產品僅對您和您的小組成員可見。對用戶不可見。
要測試您的實現:
- 在 創作者中心,轉到 貨幣化 > 開發者產品。
- 點擊 ⋮ 菜單並選擇 外部購買設置。
- 在 外部購買設置 頁面,點擊 啟用測試模式。
- 測試模式啟用後,返回 開發者產品 頁面並選擇一個要測試的產品。
- 在 基本設置 頁面,選中 允許外部購買 復選框並保存更改。
- 轉到體驗詳情頁面的 商店 標籤,購買您提供銷售的產品。
- 進入體驗並確認您已收到購買的產品。ProcessReceipt API 的收據狀態應更新為 關閉。
在測試您實現後,Roblox 將驗證測試是否成功完成,並允許您完全啟用在您的體驗外銷售開發者產品的功能。
有關 ProcessReceipt API 及其實現的更多信息,請參見 ProcessReceipt 頁面。
啟用外部銷售
要啟用外部銷售:
- 轉到 外部購買設置 頁面。
- 開啟 外部購買。
- 返回 開發者產品 頁面並選擇要在您的體驗外銷售的產品。
- 在 基本設置 頁面,選中 允許外部購買 復選框並保存更改。
- 確認產品現在可在體驗詳情頁面的 商店 標籤中購買。
要禁用開發者產品的外部銷售,請在 開發者產品 頁面上選擇該產品並取消選中 允許外部購買 復選框。
限制
- 測試模式下的可銷售項目實際上需要花費 Robux。我們建議測試低成本的開發者產品。
- 測試模式下的可銷售項目僅對您或您的小組成員可見。
- 要外部銷售,您的開發者產品 必須 具有縮略圖。
- 您不應該在您的體驗外銷售以下項目:
- 收費隨機物品
- 限定於特定數量、時間、地點或用戶設置和角色的物品
處理開發者產品購買
在用戶購買開發者產品後,您必須處理和記錄交易。為此,請在 ServerScriptService 中使用包含 ProcessReceipt 功能的 Script。
有關 ProcessReceipt API 及其實現的更多信息,請參見 ProcessReceipt 頁面。
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- 示例:產品 ID 123123 將使用者帶回滿血
productFunctions[123123] = function(receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.MaxHealth
-- 表明購買成功
return true
end
end
-- 示例:產品 ID 456456 獎勵用戶 100 金幣
productFunctions[456456] = function(receipt, player)
local leaderstats = player:FindFirstChild("leaderstats")
local gold = leaderstats and leaderstats:FindFirstChild("Gold")
if gold then
gold.Value += 100
return true
end
end
local function processReceipt(receiptInfo)
local userId = receiptInfo.PlayerId
local productId = receiptInfo.ProductId
local player = Players:GetPlayerByUserId(userId)
if player then
-- 獲取與開發者產品 ID 關聯的處理函數並嘗試運行它
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- 用戶已獲得物品
-- 返回 "PurchaseGranted" 以確認交易
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn("處理收據失敗:", receiptInfo, result)
end
end
-- 用戶的物品無法授予
-- 返回 "NotProcessedYet",並在用戶下次進入體驗時重試
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- 設置回調
-- 這只能由一個伺服器端腳本執行一次
MarketplaceService.ProcessReceipt = processReceipt
開發者產品分析
使用開發者產品分析來分析單個產品的成功,識別趨勢並預測潛在的未來收益。
使用分析,您可以:
- 查看選定時間段內您最受歡迎的開發者產品。
- 在時序圖上展示多達八個熱銷商品,以分析整體銷售和淨收入。
- 監控您的目錄並按銷售和淨收入對項目進行排序。
要訪問開發者產品分析:
- 轉到 創作 並選擇一個體驗。
- 轉到 貨幣化 > 開發者產品。
- 選擇 分析 標籤。
