ドキュメント

サポート

Economy

Economy

プレイヤーのインベントリ

Use the SDK to manage player inventory items including adding, updating, and deleting items.
読み終わるまでの所要時間 3 分最終更新 21日前

PlayerInventory
名前空間のメソッドを使用して、プレイヤーのインベントリインスタンスの取得と更新を行うことができます。
これらのメソッドは、Authentication SDK から、現在サインインしているプレイヤーのインベントリデータを返します。

GetInventoryAsync

現在サインインしているプレイヤーに関連付けられている現在のインベントリアイテムインスタンスを取得します。 このメソッドには
GetInventoryOptions
オブジェクトを任意で指定できます。これを使用して、フェッチごとのアイテム数やフィルタリングでのアイテム数を設定できます。
設定アイテム ID または
PlayersInventoryItem
ID (あるいは両方) のリストを使用して、インベントリアイテムをフィルター処理できます。これらのフィルターオプションを使用すると、指定した設定アイテム ID と
PlayersInventoryItem
ID のプレイヤーアイテムのみが返されます。
以下のサンプルコードは、現在のユーザーの最初の 5 個のアイテムを取得してから、次の 5 個を取得します。
// Optional, defaults to 20GetInventoryOptions options = new GetInventoryOptions{ ItemsPerFetch = 5};GetInventoryResult inventoryResult = await EconomyService.Instance.PlayerInventory.GetInventoryAsync(options);List<PlayersInventoryItem> firstFiveItems = inventoryResult.PlayersInventoryItems;// do something with your itemsif (inventoryResult.HasNext) { inventoryResult = await inventoryResult.GetNextAsync(5); List<PlayersInventoryItem> nextFiveItems = inventoryResult.PlayersInventoryItems; // do something with your items}
次に示すこのサンプルコードは、プレイヤーの
SWORD
アイテムのみを取得します。
GetInventoryOptions options = new GetInventoryOptions{ InventoryItemIds = new List<string>() { "SWORD" }};GetInventoryResult inventoryResult = await EconomyService.Instance.PlayerInventory.GetInventoryAsync(options);List<PlayersInventoryItem> listOfItems = inventoryResult.PlayersInventoryItems;// ... etc
これらのメソッドは
GetInventoryResult
を返します。

GetInventoryOptions

GetInventoryAsync
呼び出しの任意のオブジェクト。これには以下のフィールドがあります。
  • PlayersInventoryItemIds
    : 文字列のリスト。デフォルトは
    null
    です。取得しようとするプレイヤーのインベントリにあるアイテムの
    PlayersInventoryItem
    ID。
  • InventoryItemIds
    : 文字列のリスト。デフォルトは
    null
    です。取得しようとするアイテムの設定 ID。
  • ItemsPerFetch
    : 整数。デフォルトは 20 です。これを使用して、呼び出しごとにフェッチするアイテムの最大件数を 1 から 100 の間で設定します。

GetInventoryResult

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

AddInventoryItemAsync

プレイヤーのインベントリにアイテムを追加します。 このメソッドには
AddInventoryItemOptions
オブジェクトを任意で指定できます。これを使用してカスタムの
PlayersInventoryItemId
を設定できます。
null
の場合、自動生成されます。インスタンスデータのディクショナリを設定するためにも使用できます。
プレイヤーのインベントリに追加されたインベントリアイテムを表す
PlayersInventoryItem
を返します。
Dictionary<string, object> instanceData = new Dictionary<string, object>{ { "rarity", "purple" }};AddInventoryItemOptions options = new AddInventoryItemOptions{ PlayersInventoryItemId = "customID", InstanceData = instanceData };PlayersInventoryItem createdInventoryItem = await EconomyService.Instance.PlayerInventory.AddInventoryItemAsync("SWORD", options);

AddInventoryItemOptions

AddInventoryItemAsync
呼び出しの任意のオブジェクト。これには以下のフィールドがあります。
  • PlayersInventoryItemId
    : 文字列。デフォルトは
    null
    です。作成される
    PlayersInventoryItem
    の ID を設定します。指定されない場合は生成されます。
  • InstanceData
    :
    Dictionary<string, object>
    インスタンスデータ のディクショナリを設定するために使用されます。

DeletePlayersInventoryItemAsync

プレイヤーのインベントリからアイテムを削除します。 このメソッドには、書き込みロックの設定に使用される
DeletePlayersInventoryItemOptions
オブジェクトを任意で指定できます。書き込みロックが指定されても、アイテムが削除されるのは Economy サービスが書き込みロックを受け入れた場合のみです。書き込みロックが指定されない場合、操作は強制的に行われます。
DeletePlayersInventoryItemOptions options = new DeletePlayersInventoryItemOptions{ WriteLock = "writeLock"};EconomyService.Instance.PlayerInventory.DeletePlayersInventoryItemAsync("playersInventoryItemID", options);

DeletePlayersInventoryItemOptions

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

UpdatePlayersInventoryItemAsync

アイテムを新しいインスタンスデータで更新します。 更新されたプレイヤーインベントリアイテムを返します。 このメソッドには、書き込みロックの設定に使用される
UpdatePlayersInventoryItemOptions
オブジェクトを任意で指定できます。書き込みロックが指定されても、アイテムが更新されるのは Economy サービスが書き込みロックを受け入れた場合のみです。書き込みロックが指定されない場合、操作は強制的に行われます。
Dictionary<string, object> instanceData = new Dictionary<string, object>{ { "rarity", "purple" }};UpdatePlayersInventoryItemOptions options = new UpdatePlayersInventoryItemOptions{ WriteLock = writeLock };PlayersInventoryItem playersInventoryItem = await EconomyService.Instance.PlayerInventory.UpdatePlayersInventoryItemAsync("playersInventoryItemID", instanceData, options);

UpdatePlayersInventoryItemOptions

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

PlayersInventoryItem

PlayersInventoryItem
は、プレイヤーのインベントリ内の 1 つの一意のアイテムを表します。以下のフィールドが含まれます。
  • PlayersInventoryItemId
    : プレイヤーのインベントリ内のこの一意インベントリアイテムの ID。
  • InstanceItemId
    : このインベントリアイテムの設定 ID。
  • InstanceData
    : このプレイヤーインベントリアイテムに関連付けられているインスタンスデータ。
  • InstanceDataDeserializable
    : このプレイヤーインベントリアイテムに
    IDeserializable
    として関連付けられているインスタンスデータ。InstanceDataDeserializable の使用 を参照してください。
  • WriteLock
    : このプレイヤーのインベントリアイテムの現在の
    writelock
    文字列。
  • Created
    : このプレイヤーのインベントリアイテムが作成された日付。これは EconomyDate オブジェクトです。
  • Modified
    : このプレイヤーのインベントリアイテムが変更された日付。これは EconomyDate オブジェクトです。
また、以下のヘルパーメソッドがあります。

GetItemDefinitionAsync

このメソッドは、このプレイヤーのインベントリアイテムの設定 (タイプ
InventoryItemDefinition
) をフェッチします。
PlayersInventoryItem playersInventoryItem = // ... fetch the players inventory itemInventoryItemDefinition itemDefinition = playersInventoryItem.GetItemDefinitionAsync();

PlayersInventoryItemUpdated

このイベントをサブスクライブすると、SDK がプレイヤーのインベントリの特定のアイテムを更新したときに通知を受け取ることができます。サブスクライバーには、更新されたアイテムの
playersInventoryItem
ID が渡されます。
EconomyService.Instance.PlayerInventory.PlayersInventoryItemUpdated += playersInventoryItemID => { Debug.Log($"The players inventory item that was updated was {playersInventoryItemID}");};

InstanceDataDeserializable の使用

InstanceDataDeserializable
を使用して、プレイヤーのインベントリの特定のアイテムにカスタムデータを追加します。これは、タイプ
object
として渡され、タイプ
IDeserializable
としてフェッチされます。これを使用して、独自のカスタムクラスをインスタンスデータとして渡すことができます。
例えば、プレイヤーの盾に耐久性レーティングを設定できます。これは
InstanceDataDeserializable
を使用して設定および更新できます。
class MyInstanceData { public int Durability; public string Rarity; }MyInstanceData myInstanceData = new MyInstanceData() { Durability = 100, Rarity = "purple"};PlayersInventoryItem updatedItem = await EconomyService.Instance.PlayerInventory.UpdatePlayersInventoryItemAsync("playersInventoryItemId", myInstanceData);
以下を実行してインスタンスデータをデシリアライズできます。
MyInstanceData fetchedInstanceData = updatedItem.InstanceData.GetAs<MyInstanceData>();int durability = fetchedInstanceData.Durability;string rarity = fetchedInstanceData.Rarity;