Codeless IAP 是在 Unity 应用程序中实现应用内购 (IAP) 的最简单方法。借助 Unity Editor 提供的一个接口,只需编写最少的脚本即可配置基本的 IAP 集成。
Codeless IAP 可处理实际的 IAP 交易而无需任何代码。在 Editor 中实现 Codeless IAP 的过程包括两个步骤:
Unity 购买系统 (Unity Purchasing System) 在运行时配置您在目录中填充的商品。玩家选择 IAP 按钮时,便会启动相关商品的购买流程。
注意:您仍然需要通过编写脚本来定义玩家如何访问其新购买的内容。有关更多信息,请参阅以下的执行购买部分。
开始之前,请安装最新的 Unity IAP SDK。请参阅有关设置 Unity IAP 的文档以了解更多信息。
要将 IAP 按钮添加到场景,请在 Unity Editor 中选择 Window > Unity IAP > Create IAP Button。
按以下两种方式之一打开 IAP Catalog GUI:
下一步,使用该 GUI 为目录中的每个商品定义以下属性。
注意:IAP Catalog GUI 还提供可用于配置商品的其他工具。在导出目录以便上传到各自商店之前,还必须填写描述和定价信息。有关这些设置的详细信息,请参阅有关定义商品的文档以了解。
UnityPurchasing
必须初始化 IAP SDK 才能正常使用 IAP。在运行时加载 Codeless IAP 按钮或 IAP 监听器的第一个实例时,自动进行此操作。但是,您可能需要在 IAP 按钮或 IAP 监听器出现在游戏中之前初始化 SDK(例如,在应用程序启动后提供内购推荐 (IAP Promo) )。在此类情况下,请选中 IAP Catalog 窗口底部的 Automatically initialize UnityPurchasing (recommended)。这样可以确保在应用程序启动时 UnityPurchasing
立即初始化,并消除对无码实例生命周期的依赖。
目录必须至少包含一个商品才能运行。
注意:您可以将自动初始化功能与 IAP 按钮或监听器结合使用。在此情况下,SDK 会在游戏启动时初始化,而不是在场景中加载 IAP 按钮或监听器的第一个实例时初始化。但是,如果同时需要在脚本中手动初始化,则不应启用自动初始化,因为这可能导致错误。
商品目录至少包含一个商品时,您可以定义在购买完成或失败时的 IAP 按钮行为。
购买执行脚本代码示例:
public void GrantCredits (int credits){
userCredits = userCredits + credits;
Debug.Log("You received " + credits " Credits!");
}
运行游戏来测试 IAP 按钮。
为了使购买功能正常运行,必须在相应的应用商店中配置商品目录。为此,可将商品目录以 CSV 文件格式导出到 Google Play,或者以 XML 文件格式通过 Apple 的 Application Loader 导出到 iTunes Store。
要将商品目录导出到 Google Play:
如需将导出的目录上传到 Google Play 的完整指南,请参阅 Android 开发者 (Android Developers) 网站上的 Google 应用内计费 (Google in-app billing) 文档。
要将商品目录导出到 Apple iTunes:
如需有关通过 Apple Application Loader 进行导入的完整指南,请参阅 iTunes Connect 网站上的 Application Loader 文档。
包括 iTunes 在内的一些应用商店要求应用程序具有 Restore 按钮。Codeless IAP 提供了一种在应用程序中实现 Restore 按钮的简单方法。
要添加 Restore 按钮:
When a user selects this button at run time, the button calls the purchase restoration API for the current store. This functionality works on the iOS App Store, the Mac App Store, and the Windows Store app store. You may want to hide the Restore button on other platforms.
如果恢复成功,Unity IAP 会在与该商品关联的 IAP 按钮上调用 On Purchase Complete (Product) 函数。
有关更多信息,请参阅有关恢复购买的文档。
Codeless IAP 将成功和失败的购买事件分发给层级视图中处于活动状态的 IAP 按钮 (IAP Button) 组件。但是,在处理成功的购买时,有时可能会很难有或不希望有处于活动状态的 IAP 按钮。例如,如果购买在完成前中断,Unity IAP 会在下次初始化时再次尝试处理该购买。您可能希望在应用程序启动后立即执行此操作,在这种情况下,IAP 按钮不合逻辑。Codeless IAP 正好包含适合这些情况的 IAP 监听器 (IAP Listener) 组件。场景层级视图中处于活动状态的 IAP 监听器可接收无法分发给 IAP 按钮的任何购买事件。
添加 IAP 监听器:
Codeless IAP 功能未展示 Unity IAP 的大多数扩展功能。但是,Codeless IAP 是基于现有脚本 API 实现的,因此可在 IAPButton.cs 脚本 (Assets/Plugins/UnityPurchasing/script/IAPButton.cs) 中修改其诸多功能以满足您的需求。
要使用 Unity IAP 的扩展功能,请访问由 IStoreListener.OnInitialize
返回的 Unity IAP IStoreController
和 IExtensionProvider
实例。