# Economy 中的资源简介

> Understand the different types of resources available in Economy including currencies, inventory items, and purchases.

Economy 服务的工作原理是，允许您创建不同的游戏内单元，从而定义一个经济系统。添加到游戏中的每种单元都称为资源。Economy 系统内置了以下配置资源类型：

* [货币](#currency)
* [背包物品](#inventory-item)
* [虚拟购买](#virtual-purchase)
* [真实货币购买](#real-money-purchase)

此外，每种资源类型都可以有 [自定义数据](./custom-data.md)。

> **Note:**
>
> 所有需要输入数字的字段（例如数量、余额）的长度限制为 15 位数字（仅限整数）。

## 货币##currency

Economy 中的货币用于定义游戏内部存在的虚拟货币。在定义货币时，可以选择设置初始余额（您初始化货币时玩家获得的货币数量）和最大货币余额（玩家可以拥有的货币上限）。针对定义的每种货币，Economy 会在每个玩家帐户中存储一些余额，由游戏进行管理。

Economy 会在玩家首次与某种货币交互时初始化该货币。这包括玩家与货币系统交互后才可用的货币。

例如，玩家在游戏中使用金币虚拟货币，然后您在新版本游戏中添加了宝石货币，并将配置的初始余额设置为 10。当玩家在宝石货币可用后首次与货币互动时，Economy 会为玩家创建 10 颗宝石余额，而金币则不受影响。输入 0 值表示不为每个玩家初始化某种货币。

您可以定义一种货币的最大余额。这是任何玩家在系统中持有该货币余额的上限。当试图将余额增加到超过最大值时，游戏 API 会返回错误信息。如果不希望货币有上限，可以删除最大值或输入 0。

## 背包物品##inventory-item

背包物品是玩家在游戏中可以拥有的物品。您无需为资源设置任何属性，但始终可以向其添加[自定义数据](./custom-data.md)。

您可以使用 SDK 将背包物品与玩家关联起来，或将背包物品作为购买（使用虚拟或真实货币）的一部分与玩家关联起来。与玩家相关联的背包物品实例可以拥有自己的实例数据。请查阅[玩家数据](./player-data.md)。

## 虚拟购买##virtual-purchase

虚拟购买是一种交易资源，用于实现商店或交易功能。通过虚拟购买，玩家可以使用游戏内货币余额或背包物品而不是真实货币，来购买先前定义的游戏内货币或背包物品。

虚拟购买的用例包括：

* 游戏内商店
* 用背包物品换取其他物品
* 用背包物品换取游戏内货币
* 用一种货币兑换另一种货币（例如，用 10 枚金币兑换 1 颗宝石）

> **Tip:**
>
> 虽然虚拟购买由成本和购买所得内容组成，但并非必须两者皆定义。根据您对虚拟购买的定义，可以不包含成本或所得内容。
>
> 例如：
>
> * 当您想把资源作为礼物送给玩家时，就会出现无成本购买的情况。
> * 当您想让玩家损失资源时，购买后将不给与玩家购买所得内容。

## 真实货币购买##real-money-purchase

真实货币购买是一种交易资源，允许玩家通过应用商店使用真实货币购买游戏内货币或物品。真实货币购买的用例包括：

* 从网上商店购买一件物品或一组物品
* 使用真实货币购买虚拟货币

### 应用内购 (IAP) 集成##in-app-purchase-integration

为了将真实货币交易完全集成到您的游戏中，必须在游戏的 Economy 中创建购买。然后，Economy 中的 IAP 集成将：

* 通过相关供应商 API 验证每次购买
* 将货币和游戏内购物所得物品安全地应用到玩家帐户中
* 验证购买收据

不过，开发者仍需支持连接到商店。推荐的最佳做法是使用 [IAP 插件](https://docs.unity3d.com/Packages/com.unity.purchasing@latest)来执行此集成。

在创建需要玩家用真实货币购买资源的购买时，IAP 插件和 Economy 会发挥两种不同的作用。Economy 会根据购买情况对收据进行验证，并将资源授予玩家，而 IAP 插件会将游戏与商店集成，以进行商店初始化，并收集收据。

### 商店设置配置##configuring-the-store

在配置 Economy 服务以兑换和验证应用内购之前，您必须在 Apple App Store 和 Google Play 应用商店（取决于您计划在哪里提供游戏）中添加一些产品。

对于这两个商店，您必须在配置中设置 Product ID。然后，在配置真实货币购买时将使用同样的 Product ID。这两个商店要求遵循不同的步骤，请参考各自的文档以了解完整的设置说明。

Google Play 应用商店配置需要额外的 [IAP 设置](./add-real-money-purchase.md#configure-the-google-play-store-with-iap)。

### Unity IAP 插件集成和收据验证##unity-iap-plugin-integration-and-receipt-validation

Economy 从 [Unity IAP](https://docs.unity3d.com/Packages/com.unity.purchasing@latest) 插件接收到收据数据后，就会使用该收据数据调用相应商店的 `Redeem` 函数（例如 `redeemAppleAppStore` 和 `redeemGooglePlayStore`）。Economy 调用会进行所有验证，并按照真实货币购买中的配置，向玩家提供货币余额或背包物品实例。

## 其他资源##additional-resources

* [向游戏中添加货币](./add-currency.md)
* [向游戏中添加背包物品](./add-inventory-item.md)
* [向游戏中添加虚拟购买](./add-virtual-purchase.md)
* [向游戏中添加真实货币购买](./add-real-money-purchase.md)（包括 IAP 设置）
* [自定义数据](./custom-data.md)
* [玩家数据](./player-data.md)
* [Unity IAP](https://docs.unity3d.com/Packages/com.unity.purchasing@latest)
