JackMasaki’s blog

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

PlayFabでVirtual Currencyの取得や増減をする

今回はUnityでのVirtual Currencyの取得について書きます。

PlayFabの導入部分はこちら

jackmasaki.hatenablog.com


PlayFabのVirtual Currencyとは

Virtual Currency、翻訳すると"仮想通貨"になりますが、マイニングをしたりするわけではありません。

PlayFabを使用したTitle上で使用することができる通貨になります。

Virtual Currencyは主にCatalog上にあるItemの購入や特定の行動に対するコストとして支払うなどのことができます。

ただし、現在のPlayFabのバージョンではItemとVirtual Currencyの直接のTradeは不可能となっています。

※ドキュメントにはTradeがβ機能であるため今後追加の予定はあるとの記述があります


Virtual Currencyの発行

PlayFabのEconomy内にあるタブからCurrencyを選択後、NEW CURRENCYを選択します。

f:id:JackMasaki:20180911191859p:plain

New Currencyでは次の項目を設定します。*マークは必須項目です。

New Currency
Currency code* 半角英大文字の通貨コード
Display name* 通貨の表示名
Initial deposit 初期に配布される通貨量
Recharge rate 自動で配布される通貨レート
Recharge maximum 自動で配布される通貨の最大値

Currency codeにおいて"RM"はリアルマネー用に予約されているため使用することができません。

Recharge rateは設定されたレートを24時間かけて均等に分割され配布されます。

Recharge rateとRecharge maximumは0に設定することで通貨の自動配布をオフにすることができます。

必要な項目を入力後、SAVE CURRENCYを選択し、作成した通貨を保存します。


Virtual Currencyの手動設定

Virtual Currencyは手動で設定し、特定Playerの所持している量を変更することもできます。

PlayFabのPlayersからVirtual Currencyを配布したいPlayerを選択し、上部タブからVirtual Currencyを選択。配布するVirtual Currencyを選択します。

ここでは次の項目を入力します。

MODIFY VIRTUAL CURRENCY
Amout* 変更後の通貨量
Reason 変更理由
Comment コメント

所持通貨の変更をした場合はSAVE VIRTUAL CURRENCYを選択し保存します。

変更された記録はPlayerの上部タブにあるPlayStreamに記録されます。

f:id:JackMasaki:20180911193543p:plain


UnityでVirtual Currencyの取得

Virtual Currencyを取得するにはPlayFabClientAPI.GetUserInventory()を使用します。

PlayFabClientAPI.GetUserInventory()のレスポンスにはItemなど様々な項目がありますが、今回はVirtual Currencyの取得をするコードの例を記載します。

using PlayFab;
public void GetVirtualCurrency()
{
    PlayFabClientAPI.GetUserInventory(new GetUserInventoryRequest(), result => 
    {
        var virtualCurrency = result.VirtualCurrency["**"];
    },error => Debug.Log(error.GenerateErrorReport()));
}

現在ログインしているPlayerの所持金を取得する例になります。

VirtualCurrencyはDictionary型になっているためKeyとなる"**"に通貨コードを指定します。


UnityでVirtual Currencyの増加

Unity上でPlayerのVirtual Currencyを増加させるにはPlayFabClientAPI.AddUserVirtualCurrency()を使用します。

※AddUserVirtualCurrency()を使用するには設定で有効にする必要があります。デフォルトでは無効となっています。

設定はPlayFabのSettings→API Features内にある"Allow client to add virtual currency"のチェックボックスをTrueにすることで有効にできます。

using PlayFab;
public void AddVirtualCurrency()
{
    PlayFabClientAPI.AddUserVirtualCurrency(new AddUserVirtualCurrencyRequest()
    {
        VirtualCurrency = "**",
        Amount = 100
    },result =>{},error => Debug.Log(error.GenerateErrorReport()));
}

VirtualCurrencyはKeyとなる"**"にString型で通貨コードを指定します。 Amountには増加させたい通貨量をint型で入れます。

レスポンス結果は次のようになります。

ModifyUserVirtualCurrencyResult
Balance 変更後の所持通貨量
BalanceChange 所持通貨の変化量
PlayFabId 通貨量を変更したPlayerのID
VirtualCurrency 通貨量を変更した通貨コード

UnityでVirtual Currencyの減少

Unity上でPlayerのVirtual Currencyを減少させるにはPlayFabClientAPI.SubtractUserVirtualCurrency()を使用します。

※SubtractUserVirtualCurrency()を使用するには設定で有効にする必要があります。デフォルトでは無効となっています。

設定はPlayFabのSettings→API Features内にある"Allow client to subtract virtual currency"のチェックボックスをTrueにすることで有効にできます。

using PlayFab;
public void SubVirtualCurrency()
{
    PlayFabClientAPI.SubtractUserVirtualCurrency(new SubtractUserVirtualCurrencyRequest()
    {
        VirtualCurrency = "**",
        Amount = 100
    },result =>{},error => Debug.Log(error.GenerateErrorReport()));
}

VirtualCurrencyはKeyとなる"**"にString型で通貨コードを指定します。 Amountには減少させたい通貨量をint型で入れます。

レスポンス結果は次のようになります。

ModifyUserVirtualCurrencyResult
Balance 変更後の所持通貨量
BalanceChange 所持通貨の変化量
PlayFabId 通貨量を変更したPlayerのID
VirtualCurrency 通貨量を変更した通貨コード

ModifyUserVirtualCurrencyResultのBalanceChangeはInt32型になっているため最大値は2,147,483,647となり、それを超える変化量は破棄されるため注意が必要です。