> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XPackageChunkSelector

> XPackageChunkSelector

# XPackageChunkSelector

定义用于选择一组区块的条件。

<a id="syntaxSection" />

## 语法

```cpp theme={null}
typedef struct XPackageChunkSelector {  
    XPackageChunkSelectorType type;  
    union  
    {  
        const char* language;  
        const char* tag;  
        const char* feature;  
        uint32_t chunkId;  
    };  
} XPackageChunkSelector  
```

<a id="membersSection" />

### 成员

*type*\
类型：[XPackageChunkSelectorType](/reference/system/xpackage/enums/xpackagechunkselectortype)

选择器的类型。

*language*\
类型：const char\*

要匹配的语言属性，例如 "en-US" 英语（美国）或 "fr-FR" 法语（法国）。

*tag*\
类型：const char\*

要匹配的标签属性，例如 *BigMap* 或 *SmallMap*。

*feature*\
类型：const char\*

要匹配的功能，例如 "BigMaps"。

*chunkId*\
类型：uint32\_t

要匹配的区块编号。

<a id="remarksSection" />

## 备注

在安装 API 的许多操作中，会使用 `XPackageChunkSelector` 对象数组来选择一组区块。本节介绍将 `XPackageChunkSelector` 对象数组转换为一组区块 ID 时所使用的规则。每个 `XPackageChunkSelector` 都有一个选择器类型和一个选择器值。仅当区块上定义的所有区块说明符都与所有安装选择器匹配时，该区块才会被包含。

包中包含构成游戏的所有文件。文件可以分组为称为区块的逻辑单元。区块具有数字 ID，也可以具有零个或多个文本属性，例如语言或用户定义的标签。许多 XPackage API 对区块组进行操作。这些 API 使用 `XPackageChunkSelectors` 数组来描述 API 将使用哪些区块。本节介绍将 `XPackageChunkSelector` 对象数组转换为区块 ID 数组时所使用的规则。每个 `XPackageChunkSelector` 都有一个选择器类型和一个选择器值。仅当区块上定义的所有属性都与所有区块选择器匹配时，该区块才会被包含。

在下表中，区块选择器数组有两个选择器：language 和 tag。

| 选择器类型    | 选择器值   |
| -------- | ------ |
| Language | en-US  |
| Tag      | BigMap |

下表是使用各种属性定义一组区块的示例。

| 区块 | 语言           | 标签               |
| -- | ------------ | ---------------- |
| 1  | en-US        | （无）              |
| 2  | en-US; fr-FR | （无）              |
| 3  | fr-FR        | （无）              |
| 4  | fr-FR        | BigMap           |
| 5  | fr-FR; en-US | BigMap; SmallMap |
| 6  | en-US        | SmallMap         |

参照上表，区块选择器数组所选择的区块使用区块属性 1、2 和 5。未被区块选择器选择的区块使用区块属性 3、4 和 6。

为了更好地理解这个区块数组示例：

* 只有在区块上定义了说明符时，才会将区块选择器类型与区块属性进行匹配。区块 1 – 3 未定义任何标签，因此对这些区块会忽略类型为 tag 的区块选择器。
* 区块可以为一个属性定义多个值，多个值以分号分隔。只需一个值匹配即可。
* 无论有多少其他选择器匹配，只要有任一区块选择器类型被拒绝，该区块就会被拒绝。区块 6 被拒绝，因为 SmallMap 与 BigMap 不匹配，尽管语言匹配。

区块选择器值可以包含以分号分隔的多个值，就像区块在其布局文件中一样。此外，在数组中多次定义相同的区块选择器类型也是合法的。

如以下代码示例所示，它们是等效的：

```cpp theme={null}
XPackageChunkSelector selectors1[] =  
{
    { XPackageChunkSelectorType::Language, "en-US" },
    { XPackageChunkSelectorType::Language, "fr-FR" }
};
  
XPackageChunkSelector selectors2[] =  
{ 
    { XPackageChunkSelectorType::Language, "en-US;fr-FR" },
};
```

平台可能会进一步过滤匹配的区域集。例如，你可以向区块添加 `Devices` 属性，使其仅在特定的主机集上可用。你选择的区块只有在同时匹配系统属性时才会被包含。如果你想安装德语，但你的包中的德语区块仅在 XBOX One X 主机上可用，则安装监视器在 XBOX One 主机上不会将此区块纳入监视范围。否则，德语的安装将无法完成。

有关 XBOX One 主机游戏所使用打包技术的信息，请参阅[打包概述](/build/core-features/common/packaging/overviews/packaging)。有关创建 XVC 包步骤的信息，请参阅[开始为 XBOX 主机打包游戏](/build/core-features/common/packaging/overviews/packaging-getting-started-for-console)。

<a id="requirementsSection" />

## 要求

**头文件：** XPackage.h

**支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

<a id="seealsoSection" />

## 概念文档

* [智能交付：自定义标签说明符](/build/core-features/common/packaging/intelligentdelivery-custom)
* [智能交付：功能和配方](/build/core-features/common/packaging/intelligentdelivery-features-recipes)
* [智能交付：语言说明符](/build/core-features/common/packaging/intelligentdelivery-language)

## 另请参阅

[流式安装和智能交付](/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery)\
[XPackage](/reference/system/xpackage/xpackage_members)


## Related topics

- [XPackageChunkAvailabilityCallback](/zh-CN/reference/system/xpackage/functions/xpackagechunkavailabilitycallback.md)
- [XPackageFindChunkAvailability](/zh-CN/reference/system/xpackage/functions/xpackagefindchunkavailability.md)
- [XPackageUninstallChunks](/zh-CN/reference/system/xpackage/functions/xpackageuninstallchunks.md)
- [XPackageChangeChunkInstallOrder](/zh-CN/reference/system/xpackage/functions/xpackagechangechunkinstallorder.md)
- [Intelligent Delivery：自定义标签修饰符](/zh-CN/build/core-features/common/packaging/intelligentdelivery-custom.md)
