PlayFabでVirtual Currencyの取得や増減をする
今回はUnityでのVirtual Currencyの取得について書きます。
PlayFabの導入部分はこちら
PlayFabのVirtual Currencyとは
Virtual Currency、翻訳すると"仮想通貨"になりますが、マイニングをしたりするわけではありません。
PlayFabを使用したTitle上で使用することができる通貨になります。
Virtual Currencyは主にCatalog上にあるItemの購入や特定の行動に対するコストとして支払うなどのことができます。
ただし、現在のPlayFabのバージョンではItemとVirtual Currencyの直接のTradeは不可能となっています。
※ドキュメントにはTradeがβ機能であるため今後追加の予定はあるとの記述があります
Virtual Currencyの発行
PlayFabのEconomy内にあるタブからCurrencyを選択後、NEW CURRENCYを選択します。
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に記録されます。
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となり、それを超える変化量は破棄されるため注意が必要です。