版本:Unity 6 (6000.0)
语言:英语
无代码 IAP
订阅产品支持

定义产品

为了使用应用内购买,你的应用必须提供待售的产品列表。你可以通过脚本编写来执行此操作,或者使用 无代码 IAP 目录窗口 > Unity IAPUnity 的应用内购买的缩写
请在 术语表 中查看
> IAP 目录)。无论使用哪种实现,你都必须为每个产品定义适当的属性。本页面详细介绍这些属性。

The IAP Catalog GUI in the Unity Editor
Unity 编辑器中的IAP 目录 GUI

产品 ID

输入跨平台唯一标识符,作为产品在与应用商店通信时的默认 ID。

重要提示: ID 只能包含小写字母、数字、下划线或句点。

产品类型

每个产品都必须属于以下类型之一

类型 说明 示例
消耗品 用户可以反复购买此产品。消耗品无法还原。 * 虚拟货币
* 生命值药水
* 临时增益。
非消耗品 用户只能购买此产品一次。非消耗品可以还原。 * 武器或盔甲
* 额外内容访问权限
订阅 用户可以在有限时间内访问此产品。订阅产品可以还原。 * 按月访问在线游戏
* 提供每日奖励的 VIP 状态
* 免费试用

注意:有关订阅类型支持的更多信息,请参阅 订阅产品支持 部分。

高级

此部分定义与你的产品关联的元数据,以在游戏内商店中使用。

说明

使用以下字段为产品添加说明性文本

字段 数据类型 说明 示例
产品区域 枚举 确定所在区域可用的应用商店。 英语(美国) (Google Play、Apple)
产品标题 字符串 产品在应用商店中显示的名字。 “生命值药水”
产品说明 字符串 产品在应用商店中显示的说明性文本,通常是对产品进行解释。 “恢复 50 点生命值。”

点击加号 (+) 图标并选择其他区域设置,为 标题描述 字段添加 翻译。您可以根据自己的喜爱添加任意数量的翻译。

Populating Descriptions fields for Products in the IAP Catalog GUI
填充 IAP 目录 GUI 中产品的 描述 字段

支付

使用此部分为您对购买者支付的内容添加本地固定定义。支付有助于更轻松地管理游戏内钱包或库存。通过使用名称和数量对产品进行标记,开发人员可以快速调整某些项目类型的游戏内数量(例如,代币或宝石)。

注意:此功能仅在 Unity 2017.2 或更高版本中可用。

字段 数据类型 说明 示例
支付类型 枚举 定义购买者收到的内容类别。有四种可能的类型。 * 货币
* 项目
* 资源
* 其他
支付子类型 字符串 为内容类别提供了一定的细化级别。 * 货币 类型的“黄金”和“白银”子类型
* 项目 类型的“药剂”和“提升”子类型
数量 int 指定购买方在支付中收到的商品、货币等数量。 * 1
* >25
* 100
数据 您可以以自己喜欢的任何方式使用此字段,作为可在代码中引用的属性。 * 用户界面元素标志
* 项目稀有性
Populating Payouts fields for Products in the IAP Catalog GUI
填充 IAP 目录 GUI 中产品的 支付 字段

注意:您可以在一个产品中添加多个支付。

有关 PayoutDefinition 类详细信息,请参阅脚本参考。您始终可以使用此类向脚本中的产品添加支付信息。例如

using UnityEngine.Purchasing;

new PayoutDefinition (PayoutType.Currency, "Gold", 100)

请注意,IAP 目录充当产品目录词典,而不是库存管理器。您仍必须实现处理购买内容传递的代码。

商店 ID 覆盖

默认情况下,Unity IAP 会假设您的产品在所有应用商店中的标识符相同(如上文 ID 字段中所指定)。Unity 建议在可能的情况下这样做。但是,在某些情况下这样做是不可能的,例如在发布到禁止开发人员在 iOS 和 Mac 商店中同时使用相同产品 ID 的 iOS 和 Mac 商店时。

在这些情况下,使用覆盖字段以指定产品与跨平台 ID 不同的正确标识符。

您还可以按以下方式以编程方式执行此操作

using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        builder.AddProduct("100_gold_coins", ProductType.Consumable, new IDs
        {
            {"100_gold_coins_google", GooglePlay.Name},
            {"100_gold_coins_mac", MacAppStore.Name}
        });
        // Initialize Unity IAP...
    }
}

在此示例中,产品标识为“100_gold_coins_google”以对应 Google Play,而标识为“100_gold_coins_mac”以对应 Apple 应用商店。

注意:覆盖仅更改在与应用商店通信时 Unity IAP 使用的标识符。在进行 API 调用时,您仍应使用产品的跨平台标识符。

重要提示: ID 只能包含小写字母、数字、下划线或句点。

Google 配置(针对 Google Play 导出时必需)

提供一个产品价格,或为在 Google Play 中创建的定价模板提供一个 ID。

Populating Google Configuration fields for Products in the IAP Catalog GUI.
填充 IAP 目录 GUI 中产品的Google 配置字段。

Apple 配置(Apple 导出所需)

从下拉菜单中选择一个定价层级。Unity 支持预定义的 Apple 价格点,但不支持任意值。

选择要上传的屏幕截图。

有关屏幕截图规范的信息,请参阅 Apple 的发布者支持文档。

Populating Apple Configuration fields for Products in the IAP Catalog GUI.
填充 IAP 目录 GUI 中产品的Apple 配置字段。

在脚本中定义产品

你还可以使用购买配置生成器以编程方式声明你的产品列表。你必须为每个产品提供一个独特的跨商店产品 ID产品类型

using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        builder.AddProduct("100_gold_coins", ProductType.Consumable);
        // Initialize Unity IAP...
    }
}

  • 2018-05-30 页面修订
无代码 IAP
订阅产品支持