Skip to main content

玩家库存

要求

要使用玩家库存,你必须为你的游戏定义一个目录。有关更多信息,请阅读我们的目录教程。
可选地,你也可以为你的目录定义商店。
目录是游戏中所有可用物品的列表,而商店是目录中物品的一个子集,可以选择独有的定价方式。 每个目录可以定义多个商店,以便你可以根据用户细分或其他因素向玩家展示不同的物品集。 一旦你通过 Game Manager 或通过我们的管理 API 调用 SetCatalogItemsUpdateCatalogItems 定义了目录,你就可以在客户端和服务器上使用各种库存 API 调用。

API 概述

所有库存 API 调用都设计为服务器权威且安全。正确使用时,客户无法作弊或获得他们未赚取的物品。 客户端: 服务器: 下面显示的示例说明了调用这些 API 方法的代码块,并为玩家库存设置了基本用例。
作为参考,这些示例来自 Unicorn Battle,这是我们构建的用于演示 PlayFab 功能的示例游戏。
下面使用的 AU 虚拟货币是金币,这是一种通过击败怪物赚取的免费货币(请参阅我们的货币教程)。 在开始之前,我们将定义几个实用函数,它们将在本指南的大多数示例中被使用和重复使用。

仅客户端示例:购买并使用生命药水

客户端 API 调用顺序:PurchaseItemGetUserInventoryConsumeItem 首先,我们必须先在我们的目录中定义物品。 PlayFab - Economy - 编辑目录物品 以下是生命药水CatalogItem 要求。
  • PurchaseItem 需要一个正的物品价格(5 AU)。
  • ConsumeItem 要求物品为 Consumable,并具有正的物品数量(3)。
  • 进行购买的玩家必须在其虚拟货币余额中有 5 AU 可用。
下面提供了每个调用的代码。

示例:玩家获得并打开容器

API 调用顺序: 首先,我们必须以目录中定义的容器开始。对于本示例中的容器,我们选择了 CrystalContainer 此示例还演示了使用钥匙打开容器 - 一个可选的物品,必须也在玩家库存中,UnlockContainerInstance 调用才能成功。 PlayFab - Economy - 编辑目录容器 本示例中我们的 CrystalContainerCatalogItem 要求包括:
  • CrystalContainer 定义为容器
  • 容器可以选择性地定义一个钥匙物品,然后需要该物品来解锁容器 - 在本例中是 CrystalKey
  • 强烈建议你的容器和任何钥匙可消耗的,并具有正的使用次数,以便在使用后从玩家库存中移除。

服务器代码

客户端代码

消耗钥匙和容器

在前面的示例中,建议钥匙和/或容器是可消耗的,尽管这只是一个建议。 但是,如果容器及其钥匙(如果有)不可消耗,则可以无限次重新打开容器,每次都将其内容授予玩家。 由于玩家库存容量不是无限的,因此强烈不鼓励这种模式。当解锁可消耗容器时,容器和使用的可消耗钥匙都会自动减少其使用次数,当使用次数达到零时将它们从玩家库存中移除。

可行选项

可消耗容器,无钥匙:最基本的模式,容器在打开时被消耗,并且没有钥匙。 可消耗容器,可消耗钥匙:简单的锁定容器情况,允许玩家使用钥匙打开容器。两者都被消耗,玩家只能使用还有剩余使用次数的钥匙打开还有剩余使用次数的容器。 耐用容器,可消耗钥匙:允许玩家在每次找到钥匙时打开容器。钥匙被消耗,而只有当钥匙还有剩余使用次数时才能打开容器。 可消耗容器,耐用钥匙:允许玩家保留一把可以打开所有该钥匙对应容器的钥匙。容器被消耗,但玩家保留了以后使用该钥匙打开容器的能力。

示例:从玩家处回购库存物品

没有用于从玩家处回购库存物品的内置 API,因为该过程与游戏相关。但是,你可以使用现有的 API 方法来打造自己的 SellItem 体验:
  • PlayFab 服务器 API RevokeInventoryItem 允许你移除库存物品。
  • PlayFab 服务器 API AddUserVirtualCurrency 可以返回适量的虚拟货币。目前无法通过 PlayFab API 方法返回真实货币。
物品和虚拟货币有密切关系。有关更多信息,请参阅我们的货币教程。
以下 CloudScript 函数将上述两个服务器调用组合到一个客户端可访问的调用中。

最佳实践

  • 在进行任何更改之前,请确保验证所有客户端输入信息是否有效
  • CloudScript 不是原子的,因此调用顺序很重要:AddUserVirtualCurrency 可能成功,而 RevokeInventoryItem 可能失败。
通常最好在此过程中给玩家一些他们没有赚到的东西,而不是在没有补偿的情况下拿走某些东西。
然后可以从客户端访问此 CloudScript 函数。
最后修改于 2026年8月25日