プレイヤーのインベントリ
Use the SDK to manage player inventory items including adding, updating, and deleting items.
読み終わるまでの所要時間 3 分最終更新 6ヶ月前
PlayerInventoryこれらのメソッドは、Authentication SDK から、現在サインインしているプレイヤーのインベントリデータを返します。
GetInventoryAsync
現在サインインしているプレイヤーに関連付けられている現在のインベントリアイテムインスタンスを取得します。
このメソッドには オブジェクトを任意で指定できます。これを使用して、フェッチごとのアイテム数やフィルタリングでのアイテム数を設定できます。
GetInventoryOptions設定アイテム ID または ID (あるいは両方) のリストを使用して、インベントリアイテムをフィルター処理できます。これらのフィルターオプションを使用すると、指定した設定アイテム ID と ID のプレイヤーアイテムのみが返されます。
PlayersInventoryItemPlayersInventoryItem以下のサンプルコードは、現在のユーザーの最初の 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}
次に示すこのサンプルコードは、プレイヤーの アイテムのみを取得します。
SWORDGetInventoryOptions options = new GetInventoryOptions{ InventoryItemIds = new List<string>() { "SWORD" }};GetInventoryResult inventoryResult = await EconomyService.Instance.PlayerInventory.GetInventoryAsync(options);List<PlayersInventoryItem> listOfItems = inventoryResult.PlayersInventoryItems;// ... etc
これらのメソッドは を返します。
GetInventoryResultGetInventoryOptions
GetInventoryAsync- : 文字列のリスト。デフォルトは
PlayersInventoryItemIdsです。取得しようとするプレイヤーのインベントリにあるアイテムのnullID。PlayersInventoryItem - : 文字列のリスト。デフォルトは
InventoryItemIdsです。取得しようとするアイテムの設定 ID。null - : 整数。デフォルトは 20 です。これを使用して、呼び出しごとにフェッチするアイテムの最大件数を 1 から 100 の間で設定します。
ItemsPerFetch
GetInventoryResult
GetInventoryResult- : 現在フェッチされたアイテムが含まれる
PlayersInventoryItems。List<PlayersInventoryItem>
これには以下のメソッドがあります。
- : このメソッドは、より多くの結果を非同期でフェッチします。これには 1 つの任意のパラメーターがあり、フェッチされる結果の数を制限できます (1 から 100 を設定でき、デフォルトは 20 です)。これによって新しい結果が返され、元のアイテムと新しくフェッチされたアイテムの両方が
GetNextAsync(int itemsToFetch = 20)リストに含められます。それ以上フェッチする結果がなくなると、結果はPlayersInventoryItemsになります。null
AddInventoryItemAsync
プレイヤーのインベントリにアイテムを追加します。
このメソッドには オブジェクトを任意で指定できます。これを使用してカスタムの を設定できます。 の場合、自動生成されます。インスタンスデータのディクショナリを設定するためにも使用できます。
AddInventoryItemOptionsPlayersInventoryItemIdnullプレイヤーのインベントリに追加されたインベントリアイテムを表す を返します。
PlayersInventoryItemDictionary<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の ID を設定します。指定されない場合は生成されます。PlayersInventoryItem - :
InstanceData。インスタンスデータ のディクショナリを設定するために使用されます。Dictionary<string, object>
DeletePlayersInventoryItemAsync
プレイヤーのインベントリからアイテムを削除します。
このメソッドには、書き込みロックの設定に使用される オブジェクトを任意で指定できます。書き込みロックが指定されても、アイテムが削除されるのは Economy サービスが書き込みロックを受け入れた場合のみです。書き込みロックが指定されない場合、操作は強制的に行われます。
DeletePlayersInventoryItemOptionsDeletePlayersInventoryItemOptions options = new DeletePlayersInventoryItemOptions{ WriteLock = "writeLock"};EconomyService.Instance.PlayerInventory.DeletePlayersInventoryItemAsync("playersInventoryItemID", options);
DeletePlayersInventoryItemOptions
DeletePlayersInventoryItemAsync- : 文字列。デフォルトは
WriteLockです。これを使用して、楽観的コンカレンシーのための書き込みロックを設定します。書き込みロック を参照してください。null
UpdatePlayersInventoryItemAsync
アイテムを新しいインスタンスデータで更新します。
更新されたプレイヤーインベントリアイテムを返します。
このメソッドには、書き込みロックの設定に使用される オブジェクトを任意で指定できます。書き込みロックが指定されても、アイテムが更新されるのは Economy サービスが書き込みロックを受け入れた場合のみです。書き込みロックが指定されない場合、操作は強制的に行われます。
UpdatePlayersInventoryItemOptionsDictionary<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- : プレイヤーのインベントリ内のこの一意インベントリアイテムの ID。
PlayersInventoryItemId - : このインベントリアイテムの設定 ID。
InstanceItemId - : このプレイヤーインベントリアイテムに関連付けられているインスタンスデータ。
InstanceData - : このプレイヤーインベントリアイテムに
InstanceDataDeserializableとして関連付けられているインスタンスデータ。InstanceDataDeserializable の使用 を参照してください。IDeserializable - : このプレイヤーのインベントリアイテムの現在の
WriteLock文字列。writelock - : このプレイヤーのインベントリアイテムが作成された日付。これは EconomyDate オブジェクトです。
Created - : このプレイヤーのインベントリアイテムが変更された日付。これは EconomyDate オブジェクトです。
Modified
また、以下のヘルパーメソッドがあります。
GetItemDefinitionAsync
このメソッドは、このプレイヤーのインベントリアイテムの設定 (タイプ ) をフェッチします。
InventoryItemDefinitionPlayersInventoryItem playersInventoryItem = // ... fetch the players inventory itemInventoryItemDefinition itemDefinition = playersInventoryItem.GetItemDefinitionAsync();
PlayersInventoryItemUpdated
このイベントをサブスクライブすると、SDK がプレイヤーのインベントリの特定のアイテムを更新したときに通知を受け取ることができます。サブスクライバーには、更新されたアイテムの ID が渡されます。
playersInventoryItemEconomyService.Instance.PlayerInventory.PlayersInventoryItemUpdated += playersInventoryItemID => { Debug.Log($"The players inventory item that was updated was {playersInventoryItemID}");};
InstanceDataDeserializable の使用
InstanceDataDeserializableobjectIDeserializable例えば、プレイヤーの盾に耐久性レーティングを設定できます。これは を使用して設定および更新できます。
InstanceDataDeserializableclass 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;