Unity
プッシュ通知
アプリ内課金
IAP
itemstore

課金機能が実装されたitemstoreのUnityサンプルについて

itemstore 公式サイトのチュートリアルでは、 Unity でアプリ内課金とプッシュ通知を実装するためのサンプルを公開しています。

Unity サンプルダウンロード|チュートリアル|itemstore(アイテムストア) - アプリ内課金[In-App Purchase]を簡単実装

このサンプルに触れることで、itemstore によるアプリ内課金やプッシュ通知の機能実装について、より具体的に理解できるようになっています。

サンプルプロジェクトのシーン

今回は Unity 用 itemstore サンプルダウンロード後の補足として、サンプルプロジェクトの開き方、主な機能、連動するプログラムの調べ方について説明します。

使用環境

記事の作成に使用した環境は Windows 7 64bit, Unity 2017.2.0f3, Visual Studio Community 2017 です。

サンプルプロジェクトの開き方

Unity の導入

すでに Unity をご利用されている場合は、このセクションは読む必要はありません。
Unity をまだインストールしていない方は、このセクションを参考にして Unity を使用可能な状態にしましょう。

Unity インストーラのダウンロード

Unity 公式サイト にアクセスして、Unity のインストーラをダウンロードしましょう。
ウェブサイト右上の「Unityを入手」から、Unity のプランの選択ページへ移動します。
有料のプランもありますが、無料で利用できる「Personal」でも個人の開発やサンプルプロジェクトに触れる場合には十分です。

Unity のインストール

ダウンロードした Unity インストーラを実行して、Unity をインストールしてください。

Unity アカウントの登録

インストールした Unity を実行すると、最初に Unity アカウントの登録を求められます。
すでに Unity アカウントがあれば、そちらでログインしてください。
なければ指示に従い Unity アカウントを登録してください。
登録には、ユーザ名、メールアドレス、パスワード、住んでいる国などを入力します。

サンプルのダウンロードと展開

Unity が使用可能な状態であれば、次はサンプルをダウンロードします。

以下のページで、「Download」ボタンを押すと、説明書と Unity プロジェクトが含まれているサンプルをダウンロードすることが出来ます。
Unity サンプルダウンロード|チュートリアル|itemstore(アイテムストア) - アプリ内課金[In-App Purchase]を簡単実装

ダウンロードしたファイルは zip 形式になっていますので、解凍ソフトを使ってフォルダ展開してください。
「itemstore_Sample_Unity」という名前のフォルダが展開されます。

サンプルプロジェクトを Unity で開く

Unity を起動して、プロジェクト選択の画面で「Open」を選択します。
プロジェクトの選択ダイアログ

フォルダを選択するダイアログが表示されますので、さきほど展開した「itemstore_Sample_Unity」フォルダの中にある「itemstore_Sample_Unity」フォルダを選択してください。
同じフォルダ名が入れ子になっていますが、「ProjectSettings」などのフォルダを含んでいる「itemstore_Sample_Unity」フォルダを選択してください。
サンプルプロジェクトのフォルダの選択ダイアログ

もしも、サンプルプロジェクトが古く Unity のバージョンが新しい場合は、最新バージョンへプロジェクトを変換するための確認ダイアログが表示されます。
必要ならばサンプルプロジェクトのバックアップをとり、準備ができたなら Continue ボタンを押してください。
変換には数分かかる場合があります。

サンプルプロジェクトのバージョン変換の確認ダイアログ

変換に成功すると Unity エディタが起動して、空のシーンが表示されます。
Project タブの Itemstore というシーンを選択して開いてください。
Console タブが選択されていて Scene タブが見えない場合は、 Scene タブを選択してください。

サンプルプロジェクトを開いた直後のUnityウィンドウ

シーンを開くと、この記事の冒頭に紹介した画面が表示されます。

サンプルプロジェクトのシーン

サンプルアプリの機能の概要

サンプルアプリでは itemstore で設定したグループとアイテムの情報の取得と変更を行います。

グループとアイテムについては、公式サイトのチュートリアルをご覧下さい。
ストアの登録 課金アイテムの設定|チュートリアル|itemstore(アイテムストア) - アプリ内課金[In-App Purchase]を簡単実装

サンプルアプリは、起動した直後に、appC SDK の初期化処理を行います。
初期化処理が成功すると、グループ名、アイテムの所持数、お問い合わせキーなどの情報を取得して、テキストが更新されます。
また、プッシュ通知を受け取ると、カスタムパラメータのテキストが更新されます。

その後は、図で番号が付けられているボタンやインプットフィールドを用いて、アイテムの所持数の変更やさまざまな情報の表示を行います。

サンプルアプリの画面

①と②のボタンは消費型アイテムの所持数を増減します。
AppC.ItemStore.AddItemCount API により、指定したアイテムの所持数を増減します。
消費型アイテムの所持数を表示するテキストが更新されます。

④のボタンは③で入力した数値で消費型アイテムの所持数を上書きします。
AppC.ItemStore.SetItemCount API により、指定したアイテムの所持数を上書きします。
消費型アイテムの所持数を表示するテキストが更新されます。

⑤のボタンを押すと、確認ダイアログが表示されます。

⑥では itemstore ビューを開きます。
⑦では消費型アイテムと非消費型アイテムの所持数を更新してから、確認ダイアログを閉じます。

※ appC ItemStore API を Unity エディタ上で実行した場合は何も処理されません。 Android や iOS の環境で実行した場合のみ、アプリ内課金等の処理が行われるようにプログラムされています。詳しくは同梱されている AppC.cs をご覧下さい。

サンプルアプリのボタンの実行内容の調べ方

サンプルアプリのボタンが押されると、そのボタンに関連付けられたプログラムが実行されます。
サンプルアプリのプログラムは Itemstore.cs に記述されています。
Itemstore.cs は Project タブから選択して開くこともできます。
Itemstore.cs には appC ItemStore API を使った処理がコメント付きで書かれているので、 appC ItemStore API の用例としても参考になるでしょう。

ボタンに関連付けられた関数の探し方

ボタンがクリックされたときに呼び出されるプログラムは、関数という単位にまとめられています。
このセクションでは、ボタンに関連付けられた関数を見つけるための手順を紹介します。

例えば「 +1 」と書かれた赤いボタンは、消費アイテムの所持数を 1 増やします。
この処理を実際に行う関数は、次のようにボタンの設定を見ることで探すことができます。

消費型アイテム所持数増加ボタンの調べ方

Scene タブで調べたいボタンをクリックするか、 Hierarchy タブで調べたいボタンの名前をクリックします。
選択したボタンの設定が Inspector タブに表示されますので、その中の On Click という項目を確認しましょう。

OnClickイベントの設定フィールド

On Click には、上の図のように、どのオブジェクトの、どのコンポーネントの関数を、どのような引数をつけて呼び出すかを指定します。
ボタンがクリックされたとき、ここで設定された関数が呼び出されて処理が行われます。

例えば、上の図の場合は、Hierarchy タブの Itemstore ゲームオブジェクトの Itemstore コンポーネントの AddItemCountButton 関数を AddItemCountButton(1) のように指定した引数をつけて呼び出します。

イベントで指定されたオブジェクトとコンポーネント

Itemstore コンポーネントの AddItemCountButton 関数は次のように定義されています。

"Itemstore.cs"
public class Itemstore : MonoBehaviour {
    // itemstoreで扱うグループID
    private const string _CONSUMABLE_ID = "consumableID";

    ...

    /// <summary>
    /// アイテム数増減ボタン
    /// </summary>
    /// <param name="count">増減させたい個数</param>
    public void AddItemCountButton (int count) {
        // 第一引数に、[itemstore管理画面] -> [アプリ管理] -> [アイテム管理] で設定したグループIDを設定してください
        // 第二引数に、増やしたいアイテム数を設定してください。負の値を設定しますとアイテム所持数を減らすことができます
        AppC.ItemStore.AddItemCount (_CONSUMABLE_ID, count);

        // 増減後にアイテムの所持数を更新する
        ReloadItemCount ();
    }

    ...
}

この関数の内部で appC ItemStore の AddItemCount API が呼び出されることによって、アイテムの所持数の増減が実行されます。

appC ItemStore SDK を使ったより詳しい実装方法については次の記事を参照してください。
itemstoreを使ってアプリ内課金を簡単に実装する方法<実装:Unity編> - Qiita

隠れている確認ダイアログについて

サンプルアプリには、確認ダイアログが隠されています。
これは、「 itemstore ビュー」ボタンが押されたときに、確認のために表示されるダイアログです。
確認ダイアログにも itemstore の機能を持ったボタンがありますので、調べたい場合は、隠れている確認ダイアログを表示してみましょう。

隠れている確認ダイアログを表示するためには、はじめに Unity エディタの三角形の再生マークのような実行ボタンを押します。
これにより Unity エディタ上でアプリが実行され Game タブ内の画面で操作できる状態になります。

実行中に Game タブ内のオレンジ色の「 itemstore ビュー」ボタンを押すと、確認ダイアログが表示されます。
このとき、Game タブの画面のほかに Scene タブの画面にも同じく確認ダイアログが表示されます。

アプリの起動と確認ダイアログの表示手順

確認ダイアログが表示されている状態で、 Scene タブの確認ダイアログのボタンをクリックすると Inspector タブにそのボタンの設定が表示されます。

アプリ実行時のボタンの調べ方

あとは、さきほど説明した赤色の「 +1 」ボタンと同様に関連付けられた関数を調べることができます。
Panel や Text など複数の GUI が重なっているため、何度かクリックして選択する必要があるかもしれません。
Scene タブでボタンを選択することが難しい場合は、 Hierarchy タブのツリーから、ボタンの名前を選択しても良いでしょう。

調べ終えた後は、Unity エディタの実行ボタンをもう一度押して、アプリの実行を終了しましょう。

実行せずに確認ダイアログを表示する方法

確認ダイアログを表示するもう一つの方法として、実行しなくても、 Hierarchy タブの ConfirmCanvas の Canvas コンポーネントのチェックを有効にして、確認ダイアログを表示することもできます。

確認ダイアログのCanvasコンポーネントの有効化

この方法で確認ダイアログを表示した場合は、調べ終わった後に ConfirmCanvas の Canvas コンポーネントのチェックをはずして元に戻しておきましょう。