# Unity IAP の設定

> Set up Unity In-App Purchasing to sell items and connect to app stores in your game.

**ノート**: スクリーンショットやメニューの選択肢は、リリースバージョンによって異なる場合があります。

## 概要

このドキュメントでは、**アプリ内課金** (IAP) をアクティベートする方法を説明します。

Unity IAP パッケージには、コード化されたアプローチとコードを使わない方法が用意されており、以下を行うことができます。

* ユーザーがゲーム内でアイテムを購入するのを可能にします。
* ストアに接続することで、購入による収益を得ることができます。

以下は、その手順の概要です。

* このゲームのアプリ内課金戦略を定義します。

* プロジェクトを Unity のサービスとして設定します。

* IAP をアクティベートして、自動的にパッケージをインストールします。

* 設定を行います。

* 販売したいゲーム内アイテムを作成し、カタログ化します。

* Codeless IAP ボタンを使って、ユーザーにアイテムを購入する方法を提供します。ロジックが動作するようになったら、ボタンのルックアンドフィールをカスタマイズすることを検討してください。また、このプロセスを強化するために、リッチ API 用のスクリプトされた IAP を使用することもできます。


  **Frame:**
  ![](/api/media?file=/engine/6000.0/media/images/IAP-DemoButtons.png)

* アプリケーションを、Google、Apple、Android などの関連アプリストアに接続します。

* ストアにアイテムを加えます。

すべてをまとめます。

* このドキュメント、サポート、および IAP フォーラムのガイダンスを参考にして、IAP を設定します。
* 全てをテストします。
* ライブにします。

また、これらの手順の多くを　IAP API で行ったり、作成したものを微調整することもできます。

**ノート**: バージョン 4.2.0 と 4.6.0 の間の Unity IAP では、自動的に Unity Analytics がインストールされます。Unity Analytics は有料のサービスで、使用量が無料利用枠の制限を超えた場合は、その使用量に対する支払いが発生します。Unity Analytics を使用しないようにするには、Unity IAP 4.7.0 以降をインストールするか、プロジェクトから Unity Analytics を削除し (あるいはこの両方を行い) ます。詳細については、[こちら](https://forum.unity.com/threads/important-iap-sdk-usage-of-analytics-changed-as-of-version-4-7-0.1301283/) を参照してください。

## はじめに

**ノート**: Samsung Galaxy ストアは現在廃止されており、Unity IAP パッケージ 4.0.0 以降ではサポートされていません。この Samsung Galaxy ストア設定ガイドは、IAP パッケージのバージョン 3.1.0 以前にのみ適用されます。Unity IAP パッケージ 4.0.0 以降を使用していて Samsung Galaxy ストアを実装したい場合は、代わりに [Unity Distribution Platform](https://docs.unity3d.com/Manual/udp.html) を使用してください。

1. Unity エディターで Unity プロジェクトを開きます。

2. **Window\General\Services** の順に選択します。Services ウィンドウが表示されます。

3. プロジェクト ID を作成し、そのプロジェクトを組織に接続します。

4. COPPA のコンプライアンスに関する質問に答えます。

5. Services ウィンドウにサービスのリストが表示されます。**In App Purchasing** をクリックします。


   **Frame:**
   ![](/api/media?file=/engine/6000.0/media/images/IAP-ServicesList.png)

6. Project Settings ウィンドウが表示されます。


   **Frame:**
   ![](/api/media?file=/engine/6000.0/media/images/IAP-ProjectSettings.png)

7. **In-App Purchasing Settings** の横のトグルを **ON** にアクティベートします。

これにより、Package Manager から IAP パッケージが自動的にインストールされ、IAP を管理するための新しい機能やメニュー項目が提供されます。

## 次のステップ

### アプリ内課金戦略の決定

プレイヤーが購入するアイテムを作り、その ID を取得します。

指定された形式を使用して、プロダクト ID (文字列) を販売する各アイテムに関連付ける必要があります。ストアによっては、**プロダクト ID** をストア用にカスタマイズする必要があります。

#### 計画

* ユーザーがいつ、どのように購入できるかを決定するための戦略を定義します。
* 価格戦略を決定します。
* プロダクトのタイプ (サブスクライブ、消費型、非消費型) の定義

## 詳細情報の取得

#### IAP サンプル

1. **IAP Project Settings ページ** の **Options** から **Open Package Manager** をクリックします。
2. **In App Purchasing** へ移動します。右側の情報パネルで、**Samples** を見つけます。
3. **Samples** を展開し、**Import** を選択します。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/IAP-Samples.png)

#### フォーラムのチュートリアル

[Visit the Unity forum](https://forum.unity.com/threads/sample-iap-project.529555/) (Unity フォーラムにアクセスする)。

#### Unity Learn IAP クラス

[Refer to the Unity Learn IAP classes](https://learn.unity.com/tutorial/unity-iap) (Unity Learn IAP クラスを参照する)。

## トラブルシューティング

#### アップグレード時のコンパイルエラーを解決する方法

**Unity IAP バージョン 2.x から将来のバージョンにアップグレードする場合の重要な注意点**

Unity IAP (com.unity.purchase + Asset Store プラグイン) のバージョン 2.x から以降のバージョンにアップデートする場合、コンパイルエラーを解決するために以下の操作を行います。

* `IAPProductCatalog.json` と `BillingMode.json` を `Assets/Plugins/UnityPurchasing/Resources/` から `Assets/Resources/` へ移動します。
* `AppleTangle.cs` と `GooglePlayTangle.cs` を'Assets/Plugins/UnityPurchasing/generated' から `Assets/Scripts/UnityPurchasing/generated` に移動します。
* `Assets/Plugins/UnityPurchasing` に残っている Asset Store プラグインのフォルダーとファイルをすべてプロジェクトから削除します。

#### Unity IAP インテグレーションの一般的なコンパイラーエラー

以下のエラーメッセージは Unity IAP が Unity Cloud Services ウィンドウでアクティベートされていないか、Unity がインターネットに接続されていないことを示す場合があります。

* `CS0246`
* `System.Reflection.ReflectionTypeLoadException`
* `UnityPurchasing/Bin/Stores.dll`
* `UnityEngine.Purchasing`

これらのエラーを解決するには、以下を行います。

Services ウィンドウを閉じて再度開くことで、リロードします。リロード後、Unity IAP サービスがアクティブになっていることを確認します。これがうまくいかない場合は、インターネットを一度切断して再接続し、Unity Services にサインインし直して Unity IAP を再度アクティベートしてみてください。

**ノート**: プロジェクトの **所有者** または **管理者** の役割を持っている必要があります。
