# 以编程方式创建目录

> 使用 CatalogProvider 类可在代码中定义目录，以实现灵活或运行时驱动的配置。

您可以使用 `CatalogProvider` 类直接在代码中定义目录。此方法可在编程上完全控制目录配置，适用于复杂情况，例如，如果您的游戏具有非常大的目录，并且不断大量添加新物品。

如果您的目录是静态的，并且您更喜欢视觉设置，则可以改用 Unity Editor 中的 IAP Catalog 窗口来配置列表。请参阅 [Create a catalog in Editor](./create-catalog-in-editor.md)（在 Editor 中创建目录）了解有关该方法的说明。

> **Note:**
>
> 对于直接到消费者 (D2C) 付款提供商，您需要[创建远程目录](./payment-providers/configure-remote-catalog.md)。

要以编程方式定义目录列表，请执行以下操作：

1. 在初始化阶段，创建 `CatalogProvider` 类的实例。
2. 使用 `AddProduct()` 方法可以添加每个列名，或`AddProducts()`一次添加多个列名。
3. 对于每个列表，请指定唯一的跨店`Product ID`和`Product Type`。

以下示例演示了如何将 ID 为 `100_gold_coins` 的消耗品列表添加到`CatalogProvider`，然后调用 `FetchProducts()` 来检索定义的列表。

```cs
using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var catalog = new CatalogProvider();
        catalog.AddProduct("100_gold_coins", ProductType.Consumable);
        // Connect to the store
        catalog.FetchProducts(UnityIAPServices.DefaultProduct().FetchProductsWithNoRetries);
    }
}
```

> **Note:**
>
> 使用 `CatalogProvider` 类可直接在代码中配置特定于商店的 ID 和其他高级配置。

## 其他资源##additional-resources

* [在 Dashboard（后台）中管理您的目录](./dashboard-catalog/_index.md)
