コンテナとは、開くまでは1つのアイテムとしてインベントリに置いておけるものです。

「人からもらったプレゼント」と考えるとイメージが付きやすいかもしれません。

コンテナについては、公式で専用の解説ページが見当たらず、使い方につまづいてしまいました。

この記事では、初めての人でもつまづかないように、コンテナの使い方について詳しく解説しています。

読み終える頃には、コンテナを自由自在に操る方法を身につけていることでしょう。

では、さっそく見ていきましょう。

コンテナの使い方

コンテナを使う全体的な流れは以下のとおりです。

コンテナを使う流れ
  1. 鍵を登録する(鍵ありのみ)
  2. コンテナの中身を登録する
  3. コンテナを登録する
  4. コンテナをユーザーに付与する
  5. コンテナを消費する

具体的な手順を説明する前に、まずはコンテナの種類について解説します。

コンテナの種類

コンテナには2種類あります。

鍵なしコンテナ

鍵ありコンテナ

「鍵あり」というのは、文字通り「鍵がないと開けられないもの」とイメージすればよいです。

つまり、箱に南京錠がついているかどうか、ということですね。

「鍵なし」はいつでも開けられる箱ですが、「鍵あり」は南京錠を解錠するための鍵が一緒に必要となります。

なんとなくイメージがついてきましたか?

これからは、さらに具体的な使い方を解説していきますね。

ねこじょーかー
ねこじょーかー
カタログや仮想通貨の設定がまだの人は、ストアのアイテムを一覧表示して購入する手順を読んでから戻ってきてね!

鍵を登録する(鍵ありのみ)

鍵が必要なコンテナのみ、あらかじめ鍵のアイテムを登録しておく必要があります。

参考までに、私は以下のように登録しました。

playfab-container

鍵なしのコンテナを登録したい人は、この手順はスキップして構いません。

コンテナの中身を登録する

鍵付きの箱に何を入れるか決めて、中身のアイテムを事前に登録しておきます。

アイテムだけでなく、仮想通貨もコンテナに入れることができます。

今回は仮想通貨を入れることにしますが、アイテムを入れたい人はここで登録しておいてください。

コンテナを登録する

鍵と中身が登録できたので、次にコンテナを登録していきます。

アイテムの登録の近くにコンテナの登録する場所があります。

playfab-container

このあたりは普通のアイテムと同じ感じですね。

アイテムクラスは、後で絞り込みが簡単になるように設定しておくことをおすすめします。

次に下の部分を見てみます。

playfab-container

「コンテナーコンテンツ」というのが、箱の中身です。

今回は「10,000 GD」としました。

また、鍵付きのコンテナを作成したいので、「ロックされたコンテナー」を選んだあと、鍵のアイテムを設定します。

鍵をつけたくない場合は、「ロック解除されたコンテナー」を選べばOKです。

コンテナの登録自体はこれで完了です。

ペンギンくん
ペンギンくん
登録まではスムーズに理解できた。

コンテナをユーザーに付与する

次は、コンテナをユーザーのインベントリに付与してあげます。

コンテナはアイテムのひとつなので、GrantItemsToUser を使用すればOKです。

具体的な使い方は、ドロップテーブルを使ってアイテムを付与する手順で詳しく解説しているので、合わせてご覧ください。

実装が面倒な人は、以下のように PlayFab の管理画面からアイテムを付与できる機能を使いましょう。

playfab-container

これでコンテナの付与が完了しました。

コンテナを消費する

最後に、コンテナを消費する手順を見ていきます。

Unlock Container Instance を使ってあげればOKです。

が、ただ使い方を解説しても面白くないので、実践的な使い方を解説します。

インベントリの取得

インベントリの取得については、インベントリのアイテムを取得して消費する記事をご覧ください。

ポイントとしては、アイテムやコンテナを登録するときに設定した「アイテムクラス」で絞り込みをする点です。

List<ItemInstance> Inventory = result.Inventory.Where(x => x.ItemClass == "Treasure" || x.ItemClass == "Key").ToList();

これをやっておかないと、コンテナに関係ないアイテムも取得されてしまうで注意してください。

もちろん、インベントリを全部取得したあとに絞り込みをしても問題ありません。

ユーザーがコンテナを選んだとき

ユーザーが「このコンテナを消費しよう」という操作をしたときは、インベントリで取得しておいた ItemInstance の情報を渡すようにします。

var con = "コンテナ自体の ItemInstance ";
var key = "コンテナの鍵の ItemInstance ";
UnlockContainerInstance(con.CatalogVersion, con.ItemInstanceId, key.ItemInstanceId);

コンテナを消費する処理の実行

ここで Unlock Container Instance を呼び出します。

public void UnlockContainerInstance(string catalogVersion, string containerItemInstanceId, string keyItemInstanceId = "")
{
    PlayFabClientAPI.UnlockContainerInstance(new UnlockContainerInstanceRequest
    {
        CatalogVersion = catalogVersion,
        ContainerItemInstanceId = containerItemInstanceId,
        KeyItemInstanceId = keyItemInstanceId
    }, result => { Debug.Log("コンテナの消費成功!!");
    }, error => { Debug.Log(error.GenerateErrorReport()); });
}

KeyItemInstanceId の初期値を空にしていますが、これは「鍵なしコンテナ」を考慮しています。

鍵なしコンテナの場合は KeyItemInstanceId を空で呼び出すことで、正常に処理できるためです。

コンテナの実際の使用例

鍵なしコンテナの場合は、運営側がギフトとして付与する場合に役に立つでしょう。

例えば以下のシーン。

  1. ユーザーがランク10を達成する
  2. PlayFab 側から自動でコンテナを付与
  3. ユーザーがコンテナを開いて中身が付与される

イメージ画像としては以下の通り。

playfab-container

ユーザーが通知を確認したら、通知一覧からコンテナが消えて、インベントリにアイテムが付与される、という仕組みですね。

鍵ありコンテナの場合は、コンテナと鍵の両方が揃った場合だけ、コンテナを開けられる仕組みを作る必要があります。

オーソドックスなのは、以下のような宝箱と鍵ですかね。

playfab-container

鍵なし、鍵ありでそれぞれでメリットがあるので、シーンに応じて使い分けるようにしましょう。

おまけ:ConsumeItem をつかった場合

ペンギンくん
ペンギンくん
ConsumeItem を使ってコンテナを消費したらどうなるの?

ここまで、Unlock Container Instance を使ってコンテナを消費すると説明してきました。

しかし実は、Consume Item を使ってもコンテナを消費することができるんです。

「じゃあどっち使ってもいいの?」この疑問を解決すべく、実際に試してみました。

すると、コンテナで ConsumeItem を使った場合は、中身のアンパックがされずにコンテナだけ消費されてしまいました。

つまり、人からもらったプレゼントの中身を開けずに、そのままゴミ箱へ捨てるという、完全にサイコパスです。

サイコパス男
サイコパス男
いや、俺は普段からそうだけど。

という人はかなり少数派のはずなので、かならず Unlock Container Instance を使ってコンテナを消費するようにしましょう。

ペンギンくん
ペンギンくん
なんて怖い世界なんだ…!!

最後に

コンテナの具体的な使い方について解説してきました。

普通のアイテムの管理だけでなく、こういった機能も用意されているのは素晴らしいですね。

これを自分でゼロから実装するとなるとかなり大変です。

すでにある仕組みを存分に活用して、どんどんゲーム開発を進めてくださいね。

PlayFab の書籍も好評発売中!
playfab-book

PlayFab のことをもっと皆さんに知ってもらいたくて、合計500ページ以上にもなる書籍を5冊に分けて執筆しました。

私の知識をすべて詰め込んでいるので、ゲーム開発をさらに加速させたい方はぜひご覧ください。