玩家库存
要求
要使用玩家库存,你必须为你的游戏定义一个目录。有关更多信息,请阅读我们的目录教程。可选地,你也可以为你的目录定义商店。
API 概述
所有库存 API 调用都设计为服务器权威且安全。正确使用时,客户无法作弊或获得他们未赚取的物品。 客户端:- 使用虚拟货币购买物品:PurchaseItem
- 进行真实货币购买:StartPurchase、PayForPurchase、ConfirmPurchase
- 可以查看玩家拥有的物品:GetUserInventory
- 可以移除物品:ConsumeItem、UnlockContainerInstance
- 可以交易物品:OpenTrade、GetPlayerTrades、AcceptTrade、CancelTrade
- 可以赠送/发放物品:GrantItemsToUser
- 可以查看物品:GetUserInventory
- 可以修改物品:ModifyItemUses、UpdateUserInventoryItemCustomData
- 可以移除物品:RevokeInventoryItem、ConsumeItem、UnlockContainerInstance
作为参考,这些示例来自 Unicorn Battle,这是我们构建的用于演示 PlayFab 功能的示例游戏。
仅客户端示例:购买并使用生命药水
客户端 API 调用顺序:PurchaseItem、GetUserInventory、ConsumeItem 首先,我们必须先在我们的目录中定义物品。
CatalogItem 要求。
PurchaseItem需要一个正的物品价格(5 AU)。ConsumeItem要求物品为Consumable,并具有正的物品数量(3)。- 进行购买的玩家必须在其虚拟货币余额中有 5 AU 可用。
示例:玩家获得并打开容器
API 调用顺序:- PlayFab 服务器 API GrantItemsToUser
- PlayFab 客户端 API UnlockContainerInstance
UnlockContainerInstance 调用才能成功。

CatalogItem 要求包括:
- 将 CrystalContainer 定义为容器。
- 容器可以选择性地定义一个钥匙物品,然后需要该物品来解锁容器 - 在本例中是 CrystalKey。
- 强烈建议你的容器和任何钥匙都是可消耗的,并具有正的使用次数,以便在使用后从玩家库存中移除。
服务器代码
客户端代码
消耗钥匙和容器
在前面的示例中,建议钥匙和/或容器是可消耗的,尽管这只是一个建议。 但是,如果容器及其钥匙(如果有)不可消耗,则可以无限次重新打开容器,每次都将其内容授予玩家。 由于玩家库存容量不是无限的,因此强烈不鼓励这种模式。当解锁可消耗容器时,容器和使用的可消耗钥匙都会自动减少其使用次数,当使用次数达到零时将它们从玩家库存中移除。可行选项
可消耗容器,无钥匙:最基本的模式,容器在打开时被消耗,并且没有钥匙。 可消耗容器,可消耗钥匙:简单的锁定容器情况,允许玩家使用钥匙打开容器。两者都被消耗,玩家只能使用还有剩余使用次数的钥匙打开还有剩余使用次数的容器。 耐用容器,可消耗钥匙:允许玩家在每次找到钥匙时打开容器。钥匙被消耗,而只有当钥匙还有剩余使用次数时才能打开容器。 可消耗容器,耐用钥匙:允许玩家保留一把可以打开所有该钥匙对应容器的钥匙。容器被消耗,但玩家保留了以后使用该钥匙打开容器的能力。示例:从玩家处回购库存物品
没有用于从玩家处回购库存物品的内置 API,因为该过程与游戏相关。但是,你可以使用现有的 API 方法来打造自己的 SellItem 体验:- PlayFab 服务器 API RevokeInventoryItem 允许你移除库存物品。
- PlayFab 服务器 API AddUserVirtualCurrency 可以返回适量的虚拟货币。目前无法通过 PlayFab API 方法返回真实货币。
物品和虚拟货币有密切关系。有关更多信息,请参阅我们的货币教程。
最佳实践
- 在进行任何更改之前,请确保验证所有客户端输入信息是否有效。
- CloudScript 不是原子的,因此调用顺序很重要:AddUserVirtualCurrency 可能成功,而 RevokeInventoryItem 可能失败。
