> ## 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](/zh-TW/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` 物件陣列轉換為一組區塊識別碼時所使用的規則。每個 `XPackageChunkSelector` 都有選取器類型和選取器值。如果區塊上定義的所有區塊指定元都符合所有安裝選取器，該區塊就會被包含在內。

套件包含組成遊戲的所有檔案。檔案可以分組為稱為區塊的邏輯單位。區塊有數值識別碼，也可以有零個或多個文字屬性，例如語言或使用者定義的標記。許多 XPackage API 會針對區塊群組進行操作。這些 API 會使用 `XPackageChunkSelectors` 陣列來描述 API 將使用哪些區塊。本節說明將 `XPackageChunkSelector` 物件陣列轉換為區塊識別碼陣列時所使用的規則。每個 `XPackageChunkSelector` 都有選取器類型和選取器值。如果區塊上定義的所有屬性都符合所有區塊選取器，該區塊就會被包含在內。

在下表中，區塊選取器陣列有兩個選取器：語言和標記。

| 選取器類型 | 選取器值 |
| - | - |
| 語言 | en-US |
| 標記 | 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 沒有定義標記，因此這些區塊會忽略類型為標記的區塊選取器。
* 區塊可以使用分號分隔多個值，為一個屬性定義多個值。只需要符合其中一個值即可。
* 如果任何區塊選取器類型遭到拒絕，無論有多少其他選取器符合，該區塊都會遭到拒絕。區塊 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 遊戲所使用之封裝技術的相關資訊，請參閱[封裝概觀](/zh-TW/build/core-features/common/packaging/overviews/packaging)。如需建立 XVC 套件之步驟的相關資訊，請參閱[開始為 XBOX 主機封裝遊戲](/zh-TW/build/core-features/common/packaging/overviews/packaging-getting-started-for-console)。

<a id="requirementsSection" />

## 需求

**標頭：** XPackage.h

**支援的平台：** Windows、XBOX One 系列主機和 XBOX Series 主機

<a id="seealsoSection" />

## 概念文件

* [Intelligent Delivery：自訂標記指定元](/zh-TW/build/core-features/common/packaging/intelligentdelivery-custom)
* [Intelligent Delivery：功能和配方](/zh-TW/build/core-features/common/packaging/intelligentdelivery-features-recipes)
* [Intelligent Delivery：語言指定元](/zh-TW/build/core-features/common/packaging/intelligentdelivery-language)

## 另請參閱

[串流安裝和 Intelligent Delivery](/zh-TW/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery)\
[XPackage](/zh-TW/reference/system/xpackage/xpackage_members)


## Related topics

- [XPackageChunkSelector](/reference/system/xpackage/structs/xpackagechunkselector.md)
- [XPackageChunkAvailabilityCallback](/reference/system/xpackage/functions/xpackagechunkavailabilitycallback.md)
- [XPackageUninstallChunks](/reference/system/xpackage/functions/xpackageuninstallchunks.md)
- [XPackageFindChunkAvailability](/reference/system/xpackage/functions/xpackagefindchunkavailability.md)
- [XPackageChangeChunkInstallOrder](/reference/system/xpackage/functions/xpackagechangechunkinstallorder.md)
