Unity3D 5.3
そして現在、Unity3D 5.3は、「箱から出してすぐに」と言うアプリ内購入をサポートするようになりました。 このシンプルなツールにより、最も人気のあるアプリストアのアプリ内購入を簡単に実装できます。
現在サポートされています:
- Amazonアプリ
- Google Play
- iOS App Store
- Mac App Store
- Samsung GALAXYアプリ
- ティゼン店
- Windowsストア
プロジェクト統合
まず、[サービス]タブで、[アプリ内購入]フィールドをクリックして、この機能を有効にします。 分析サービスも自動的にオンになり、収益、有料ユーザーあたりの平均収益(ARPPU)、1日のアクティブユーザーあたりの平均収益(ARPDAU)が表示されます。


次に、「インポート」ボタンをクリックする必要があります。その後、必要なすべてのアセットがプロジェクトにインポートされます。

アプリ内マネージャー
次に、IAPで動作するコードを追加する必要があります。 このC#スクリプトには、次の関数が含まれています。
- InitializePurchasing:IAPを初期化し、販売可能なアイテムを追加し、必要なイベントを処理できるようにします。
- BuyProductID:識別子を使用して必要なアイテムを購入できる機能
- BuyConsumable、BuyNonConsumable、BuySubscription:さまざまなタイプの購入を購入できる機能。 多くの店舗が3種類の購入をサポートしています。
- 消耗品-購入の種類。そのデータはゲーム内でプレイヤーが使用できます(例:コイン、エネルギーの補充)。
- NonConsumable-購入のタイプ。そのデータはプレイヤーに永久に残ります(例:ユニークな剣、広告の無効化)
- サブスクリプション-サブスクリプション。
- RestorePurchases:-購入復旧メカニズムを実装できる機能。 iOSで必要です。 ゲームに非消費型の購入がある場合、その回復を実行するボタンが必要です
- OnInitialize:アプリケーションがUnity IAPに接続できるときに呼び出されます。
- OnInitializeFailed:アプリケーションがUnity IAPに接続できなかったときに呼び出されます。 エラーメッセージはコンソールに書き込まれます
- ProcessPurchase:購入が成功したときに呼び出されます。
- OnPurchaseFailed:この関数は、購入が失敗したときに呼び出され、エラーメッセージがコンソールに書き込まれます。
ゲームで使用する
スクリプトの使用方法を明確にするために、例を挙げます。 2つの購入があります。1つは非消耗品、もう1つは広告を無効にし、2つ目はプレイヤーに80コインを提供します。 2つのプラットフォームが使用されます:Google Play、AppStore。 購入ごとに、UnityIAAP、Google Play、AppStoreの購入識別子を含む3つの定数を宣言する必要があります。
public const string pMoney80 = "money_80"; public const string pNoAds = "no_ads"; public const string pMoney80AppStore = "app_money_80"; public const string pNoAdsAppStore = "app_no_ads"; public const string pMoney80GooglePlay = "gp_money_80"; public const string pNoAdsGooglePlay = "gp_no_ads";
その後、これらの定数を初期化関数に渡す必要があります。
builder.AddProduct(pMoney80, ProductType.Consumable, new IDs() { { pMoney80AppStore, AppleAppStore.Name }, { pMoney80GooglePlay, GooglePlay.Name } }); builder.AddProduct(pNoAds, ProductType.NonConsumable, new IDs() { { pNoAdsAppStore, AppleAppStore.Name }, { pNoAdsGooglePlay, GooglePlay.Name } });
ここで、アイテム購入ボタンで、BuyProductID関数を切断し、パラメーターとして販売されているアイテムの識別子を渡す必要があります。

また、PurchaseProcessingResult関数で、購入ごとにアクションを追加します。
if (String.Equals(args.purchasedProduct.definition.id, pMoney80, StringComparison.Ordinal)) { //Action for money ResourceManager.Instance.Money += 80; } else if (String.Equals(args.purchasedProduct.definition.id, pNoAds, StringComparison.Ordinal)) { //Action for no ads ResourceManager.Instance.NoAds = true; }
以上です。 AppStoreとGoogle Playで同じ識別子を使用して購入を作成することを忘れないでください。