ドキュメント

サポート

Economy

Economy

プレイヤーの残高

Use the SDK to manage player currency balances.
読み終わるまでの所要時間 3 分最終更新 21日前

PlayerBalances
名前空間には、プレイヤーの通貨残高のフェッチと更新を行うすべてのメソッドが含まれます。
これらのメソッドは、Authentication SDK から、現在サインインしているプレイヤーの残高を返します。

GetBalancesAsync

現在のユーザーの通貨残高を取得します。任意で
GetBalancesOptions
を指定できます。
残高を取得するとき、
GetBalancesOptions
を使用して、フェッチする残高数の制限 (1 - 100) を設定できます。これはページ区切りに役立ちます。デフォルトの数は 20 です。
以下のサンプルコードでは、現在のユーザーの最初の 5 件の残高が取得され、その後、次の 5 件が取得されます。これには、設定からすでに削除された通貨のものも含まれます。
// Optional, defaults to 20GetBalancesOptions options = new GetBalancesOptions{ ItemsPerFetch = 5};GetBalancesResult getBalancesResult = await EconomyService.Instance.PlayerBalances.GetBalancesAsync(options);List<PlayerBalance> firstFiveBalances = getBalancesResult.Balances;// do something with your balancesif (getBalancesResult.HasNext) { getBalancesResult = await getBalancesResult.GetNextAsync(options.ItemsPerFetch); List<PlayerBalance> nextFiveBalances = getBalancesResult.Balances; // do something with your balances}
これらのメソッドは
GetBalancesResult
を返します。GetBalancesResult を参照してください。

GetBalancesOptions

GetBalancesAsync
呼び出しの任意のオブジェクト。これには以下のフィールドがあります。
  • ItemsPerFetch
    : 整数。デフォルトは 20 です。これを使用して、呼び出しごとにフェッチする残高の最大件数を 1 から 100 の間で設定します。

GetBalancesResult

GetBalancesResult
を使用すると、取得した残高のリストをページで区切ってアクセスできるようになります。これには以下のフィールドがあります。
  • Balances
    : 現在フェッチされた残高が含まれる
    List<PlayerBalance>
これには以下のメソッドがあります。
  • GetNextAsync(int itemsToFetch = 20)
    : このメソッドは、より多くの結果を非同期でフェッチします。これには 1 つの任意のパラメーターがあり、フェッチされる結果の数を制限できます (1 から 100 を設定でき、デフォルトは 20 です)。これによって新しい結果が返され、元のアイテムと新しくフェッチされたアイテムの両方が
    Balances
    リストに含められます。

SetBalanceAsync

指定した通貨の残高を指定値に設定します。 このメソッドには、書き込みロックの設定に使用される
SetBalancesOptions
オブジェクトを任意で指定できます。これを指定すると、楽観的コンカレンシーを実現するために、
writeLock
が直前の読み取りで受け取った
writeLock
と一致しない限り例外がスローされます。指定しないと、データ内に存在する
writeLock
に関係なくトランザクションが進みます。
操作が成功した場合、このメソッドは、更新の適用後に現在の残高を返します。
string currencyID = "GOLD_BARS";int newAmount = 1000;string writeLock = "someLockValueFromPreviousRequest";SetBalanceOptions options = new SetBalanceOptions{ WriteLock = writeLock};PlayerBalance newBalance = await EconomyService.Instance.PlayerBalances.SetBalanceAsync(currencyID, newAmount);// ORPlayerBalance otherNewBalance = await EconomyService.Instance.PlayerBalances.SetBalanceAsync(currencyID, newAmount, options);

SetBalanceOptions

SetBalanceAsync
呼び出しの任意のオブジェクト。これには以下のフィールドがあります。
  • WriteLock
    : 文字列。デフォルトは
    null
    です。これを使用して、楽観的コンカレンシーのための書き込みロックを設定します。書き込みロック を参照してください。

IncrementBalanceAsync

指定値に応じて、指定した通貨の残高を増やします。 このメソッドには、書き込みロックの設定に使用される
IncrementBalancesOptions
オブジェクトを任意で指定できます。これを指定すると、楽観的コンカレンシーを実現するために、
writeLock
が直前の読み取りで受け取った
writeLock
と一致しない限り例外がスローされます。指定しないと、データ内に存在する
writeLock
に関係なくトランザクションが進みます。
操作が成功した場合、このメソッドは、更新の適用後に現在の残高を返します。
string currencyID = "GOLD_BARS";int incrementAmount = 1000;string writeLock = "someLockValueFromPreviousRequest";IncrementBalanceOptions options = new IncrementBalanceOptions{ WriteLock = writeLock};PlayerBalance newBalance = await EconomyService.Instance.PlayerBalances.IncrementBalanceAsync(currencyID, newAmount);// ORPlayerBalance otherNewBalance = await EconomyService.Instance.PlayerBalances.IncrementBalanceAsync(currencyID, newAmount, options);

IncrementBalanceOptions

IncrementBalanceAsync
呼び出しの任意のオブジェクト。これには以下のフィールドがあります。
  • WriteLock
    : 文字列。デフォルトは
    null
    です。これを使用して、楽観的コンカレンシーのための書き込みロックを設定します。書き込みロック を参照してください。

DecrementBalanceAsync

指定値に応じて、指定した通貨の残高を減らします。 このメソッドには、書き込みロックの設定に使用される
DecrementBalanceOptions
オブジェクトを任意で指定できます。これを指定すると、楽観的コンカレンシーを実現するために、
writeLock
が直前の読み取りで受け取った
writeLock
と一致しない限り例外がスローされます。指定しないと、データ内に存在する
writeLock
に関係なくトランザクションが進みます。
操作が成功した場合、このメソッドは、更新の適用後に現在の残高を返します。
string currencyID = "GOLD_BARS";int decrementAmount = 1000;string writeLock = "someLockValueFromPreviousRequest";DecrementBalanceOptions options = new DecrementBalanceOptions{ WriteLock = writeLock};PlayerBalance newBalance = await EconomyService.Instance.PlayerBalances.DecrementBalanceAsync(currencyID, newAmount);// ORPlayerBalance otherNewBalance = await EconomyService.Instance.PlayerBalances.DecrementBalanceAsync(currencyID, newAmount, options);

DecrementBalanceOptions

DecrementBalanceAsync
呼び出しの任意のオブジェクト。これには以下のフィールドがあります。
  • WriteLock
    : 文字列。デフォルトは
    null
    です。これを使用して、楽観的コンカレンシーのための書き込みロックを設定します。書き込みロック を参照してください。

PlayerBalance

プレイヤーの残高は、プレイヤーの 1 つの通貨残高を表します。これには以下のフィールドがあります。
  • CurrencyId
    : この残高が表す通貨の ID。
  • Balance
    : プレイヤーが所有するこの通貨の金額 (整数)。
  • WriteLock
    :
    writeLock
    の現在の文字列。
  • Created
    : この残高が作成された日付。これは EconomyDate オブジェクトです。
  • Modified
    : この残高が変更された日付。これは EconomyDate オブジェクトです。
また、以下のヘルパーメソッドがあります。

GetCurrencyDefinitionAsync

これは、この残高に関連付けられた通貨の通貨定義を取得するための便利なメソッドです。これは、CurrencyDefinition を返します。
PlayerBalance myPlayerBalance = ... // Get a player balance from one of the above methodsCurrencyDefinition currencyDefForMyPlayerBalance = myPlayerBalance.GetCurrencyDefinitionAsync();

BalanceUpdated

このイベントをサブスクライブすると、SDK が特定の通貨の残高を更新したときに通知を受け取ることができます。サブスクライバーには、更新された残高の通貨 ID が渡されます。
EconomyService.Instance.PlayerBalances.BalanceUpdated += currencyID => { Debug.Log($"The currency that was updated was {currencyID}");};