开发者产品是一种用户可以购买多次的物品或能力,例如体验货币、弹药或药水。
创建开发者产品
要创建一个开发者产品:
- 前往创作并选择一个体验。
- 请前往 货币化 > 开发者产品 。
- 点击 创建一个开发者产品 。
- 上传一个图像以显示为产品标志。请确保图像不超过512x512像素,不包含重要细节在其圆形边界之外,并且在 .jpg、.png 或 .bmp 格式上。
- 输入产品的名称和描述。
- 在 Robux 中设置产品价格。最低价格为 1 Robux,最高价格为 10 亿 Robux。
- 点击 创建开发者产品 。
获取开发者产品ID
要使用脚本,您需要一个开发者产品 ID。要获得产品 ID:
请前往 货币化 > 开发者产品 。
将鼠标悬停在产品上,单击 ⋯ 菜单。
单击 复制资产 ID 来复制 ID 到您的剪贴板。
销售开发者产品
要在体验中实现和销售开发者产品,请调用 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("Developer Product Name: " .. productInfo.Name)
print("Price in Robux: " .. productInfo.PriceInRobux)
print("Description: " .. productInfo.Description)
end
使用 GetDeveloperProductsAsync() 来检索您体验相关的所有开发者产品。此函数返回一个 Pages 对象,您可以检查并过滤它们来构建体验中的商店或产品列表图形界面。
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(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("Purchase prompt shown successfully")
end
end
您还可以在 LocalScript 内组合函数。例如,您可以创建一个按钮或端庄 NPC 样的 UI 元素,然后使用 GetProductInfo() 将现有的开发者产品连接到该元素,检查是否待售售产品,
local MarketplaceService = game:GetService("MarketplaceService")
local player = game.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("This is for sale")
-- 提示产品购买
MarketplaceService:PromptProductPurchase(player, productId)
else
-- 通知产品不在待促销
print("This product is not currently for sale.")
end
else
print("Error retrieving product info: " .. tostring(productInfo))
end
end)
处理开发者产品购买
当用户购买开发者产品时,您必须处理和记录交易。要实现此目标,请使用 Script 在 ServerScriptService 使用 ProcessReceipt() 函数。
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- 示例: product 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("Failed to process receipt:", receiptInfo, result)
end
end
-- 无法向用户发放物品
-- 返回“未处理”,并在用户下次加入体验时再次尝试
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- 设置回调
-- 这只能由一台服务器端脚本执行
MarketplaceService.ProcessReceipt = processReceipt
开发者产品分析
使用开发者产品分析分析个人产品的成功,识别趋势,并预测未来的潜在收益。
使用分析,您可以:
- 查看您在指定时间段内最佳的开发者产品。
- 在时间序列图表上展示最多八个最畅销产品,分析总体销售和净收入。
- 监控您的目录,按销售额和净收入对项目进行排序。
要访问开发者产品分析:
- 前往创作并选择一个体验。
- 请前往 货币化 > 开发者产品 。
- 选择 分析 选项卡。