JackMasaki’s blog

掲載した記事ネタや作ったアプリ、参加したイベントレポートなどを掲載します

PlayFabでVirtual Currencyを使用してCatalogから買い物をする

今回はUnityでのVirtual Currencyを使用してCatalogからの買い物について書きます。

PlayFabの導入部分はこちら

jackmasaki.hatenablog.com

Virtual Currencyの取得方法はこちら

jackmasaki.hatenablog.com


PlayFabのCatalogとは

PlayFab内の仮想アイテムを定義するもので、PlayerがItemを購入するために必要になります。

CatalogにはItemの購入(Virtual Currency/Real Money)、セールス機能が付いたItemショップStores、ランダムな結果を出力するDrop Tablesなど様々な機能があります。

詳しくは公式のCatalogsドキュメントをみると何ができるかが書いてあります。

Catalogs


Catalogの作成とItemの作成

PlayFabのEconomyからCatalogsのタブを選択し、NEW CATALOGを選択します。

f:id:JackMasaki:20180912235939p:plain

入力する項目は2つです。

New Catalog
Catalog version* Catalogの名前
Make Primary catalog チェックボックス

Make Primary catalogはTrueにすることで、作成するCatalogを主要なバージョンのCatalogとして設定することができます。 これは後で変更することもできます。

次にItemを作成しCatalogに追加します。

PlayFabのEconomyからCatalogsのタブを選択し、先ほど作成したCatalogの名前を選択します。その後NEW ITEMを選択することでItemを新規で作成することができます。

f:id:JackMasaki:20180913000542p:plain

Itemには次の項目を設定することができます。

New Catalog Item
Item ID* Itemの内部ID
Item class Catalog管理用の識別子
Tags Catalog管理用のタグ
Item image URL Itemの画像URL
Display name Itemの表示名
Description Itemの説明
Is stackble ItemがInventoryに1つのみ登録され数量が増える
Is tradable Trade APIでItemの交換を可能にする
is a token for character crearion GrantCharacterToUserなどで使用するTokenかどうか
CONSUMABLE 下で説明
PRICES 使用するVirtual Currency(RM)と価格を設定
CUSTOM DATA 自由に設定できるData

CONSUMABLEは”Consumable”を選択することでItemを消費する設定になり、また次のように設定できます。

Consumable
By count 使用できる個数
By time 使用期間
Time group name 消費時間を共有するグループ

UnityでCatalogを取得する

UnityではPlayFabClientAPI.GetCatalogItems()を使用することでCatalogを取得することができます。 例えば次のようなコードです。

using PlayFab;

public void GetCatalogItems()
{
    PlayFabClientAPI.GetCatalogItems(new GetCatalogItemsRequest(), result => 
    {
        var itemList = result.Catalog;
    }, error => Debug.Log(error.GenerateErrorReport()));
}

GetCatalogItems()を使用してGetCatalogItemsRequest()に何も指定しない場合にはPrimaryのCatalogが呼ばれます。 指定したCatalogを呼びたい場合はGetCatalogItemsRequest()のCatalogVersionを指定してあげることで呼ぶことができます。


UnityでVirtual Currencyを使用してCatalogから買い物をする

UnityではPlayFabClientAPI.PurchaseItem()を使用することでCatalogからItemを購入することができます。 例えば次のようなコードです。

public void BuyItem()
{
    PlayFabClientAPI.PurchaseItem(new PurchaseItemRequest
    {
        ItemId = "itemID",
        VirtualCurrency = "**",
        Price = ***           
    },result => { },error => Debug.Log(error.GenerateErrorReport()));
}

PurchaseItemRequest内のItemIDには作成したItem IDを、VirtualCurrencyには購入するために使うVirtualCurrencyの通貨コードを、Priceには価格を入れることで買い物が行われます。

GetCatalogItems()と同様でCatalogVersionを指定しなければ最新のPrimaryのCatalogが呼ばれます。