---
title: Choice Template 指南
slug: world-sdk-guide-ch/choice-tower-template-guide
docTags: 
createdAt: 2026-07-31T00:00:00.000Z
---

| 摘要      | 这是一款面向创作者的模板，玩家可以通过穿过符合问题的门来选择自己的喜好，并在 Sharing Zone（分享区）中与其他玩家比较结果。 |
| ------- | ------------------------------------------------------------------- |
| 难度      | 中级（无需修改代码）                                                          |
| 类型      | 性格测试、平衡游戏、基于记录的社交分享                                                 |
| 单人/多人游玩 | 多人游玩                                                                |

:::hint{type="info"}
**📘 下载 Choice Template**

[https://studio.zepeto.me/console/download/6ace135ae8211029e121b383](https://studio.zepeto.me/console/download/6ace135ae8211029e121b383)
:::

:::hint{type="success"}
**🎥 Choice Template 视频指南**
如果您更喜欢**视频，请跟着下方的视频**进行操作。
支持多语言字幕，观看时请**开启字幕**！
:::

::embed[]{url="https://www.youtube.com/embed/FS4XEyo_eas"}

# 使用 Choice Template 制作平衡游戏世界

**Choice Template** 是一款面向创作者的模板，您可以创建让玩家通过穿过对应问题的门来选择自身喜好的世界。

创作者无需修改代码，即可更改问题、选项、阶段数量以及结果面板的图片。

当玩家完成所有阶段后，可以查看自己的选择结果，并在 Sharing Zone 中与其他玩家的结果进行比较。

:::hint{type="success"}
**只要按照本指南的顺序操作，就能制作出包含以下功能的选项型世界！**

- 显示问题和选项图片的选项门
- 多个阶段按顺序连接的进行方式
- 保存并恢复玩家之前的选择记录
- 实时显示选择比例的 HUD
- 可以查看自己与其他玩家结果的 Sharing Zone
- 将选择结果保存为图片或分享至 ZEPETO 动态的功能
:::

:::BlockQuote
📌 **请按照以下顺序尝试设置模板！**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[1. 放置模板](docId\:faymNxaYfg_9DpWWjMaGA)

[2. 设置问题与选项](docId\:faymNxaYfg_9DpWWjMaGA)

[3. 添加和管理问题](docId\:faymNxaYfg_9DpWWjMaGA)

[4. 设置游戏进行方式](docId\:faymNxaYfg_9DpWWjMaGA)

[5. Sharing Zone](docId\:faymNxaYfg_9DpWWjMaGA)
:::

:::VerticalSplitItem
[6. 测试世界](docId\:faymNxaYfg_9DpWWjMaGA)

[7. 常见问题 (FAQ)](docId\:faymNxaYfg_9DpWWjMaGA)

[8. 应用创意](docId\:faymNxaYfg_9DpWWjMaGA)

[9. 使用 Sample Scene](docId\:faymNxaYfg_9DpWWjMaGA)
:::
::::

# 1. 放置模板

## 添加 Choice Template

**Choice\_Template** Prefab 包含了运行 Choice Template 所需的所有对象，如选项门、HUD、结果面板以及 Sharing Zone。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/id26L9TvJjz0OtETrQluC_choice-template-prefab.png" size="80" isUploading="false" width="636" height="449" darkWidth="636" darkHeight="449" alt="ChoiceTemplatePrefab" showCaption="false"}

1. 在 Unity 的 **Project** 窗口中找到 `Assets/Choice_Template/Choice_Template.prefab`。
2. 将 `Choice_Template.prefab` 拖拽到 **Scene** 或 **Hierarchy** 窗口中。
3. 检查 **Hierarchy** 窗口，确认是否已生成一个 `Choice_Template` 对象。

:::hint{type="success"}
如果您想利用 Sample Scene 更方便地开始，请参考 [9. 使用 Sample Scene](docId\:faymNxaYfg_9DpWWjMaGA)！
:::

## Choice Template 教程

首次将 `Choice_Template` 放置到 Scene 中时，会自动打开 **Choice Template 教程窗口**。该教程窗口将按照以下顺序引导您了解模板的主要设置位置：

1. 了解模板结构
2. 输入问题和答案
3. 应用到 Scene
4. 添加和管理问题
5. 设置游戏进行方式
6. 自定义 Sharing Zone
7. 测试世界

请尝试点击 **在 Inspector 中打开** 按钮。Hierarchy 窗口中会自动选中该对象，您可以立即在 Inspector 窗口中进行设置。

**如果想再次打开教程窗口怎么办？**

在 Hierarchy 窗口中选择 `Choice_Template`，然后在 Inspector 窗口中点击 **Open Choice Template Tutorial** 按钮即可。

:::hint{type="danger"}
**注意事项**

- 一个 Scene 中请只放置一个 `Choice_Template`。
- 在完全了解其功能之前，建议不要删除模板内部的对象或断开连接。
- 请务必在 **Edit 模式** 下进行所有设置，而不是在 Play 模式下。
:::

## 模板的基本结构

`Choice_Template` 主要由以下三个部分组成。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/QvcHCgyREVmi2gHNZVkrf_choice-template.png" size="50" isUploading="false" width="266" height="66" darkWidth="266" darkHeight="66" alt="Choice_Template" showCaption="false"}

- **Choice\_UI**
  - 这是玩家可见的 UI 集合，例如 HUD（我的选择、进度、选择比例）、Toast 通知以及结果画面等。
- **Choice\_GameManager**
  - 管理问题的进行顺序、选择记录以及数据的保存与恢复。
  - 每个问题（`Choice_Stage`）和选项门都放置在该对象下方。
- **Choice\_SharingZone**
  - 完成所有选择的玩家在此空间可以查看自己的结果，并查看其他玩家的结果。

:::hint{type="success"}
**提示 (TIP)**

一开始请不要大幅更改模板的位置和大小，先在默认状态下测试一次。
确认基本运行正常后，再调整阶段间距并装饰周围环境，这样会更容易理解。
:::

# 2. 设置问题与选项

## 使用 Stage Manager

使用 **Choice\_Template 对象** 内的 **StageManager**，您可以在一个地方集中编辑各阶段显示的问题和选项。

请在 Hierarchy 窗口中选择 **Choice\_Template 对象**。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/vFCySiuFBVdjMdb5r-H1P_group-3.png" size="80" isUploading="false" width="767" height="686" darkWidth="767" darkHeight="686" alt="StageManager" showCaption="false"}

:::hint{type="success"}
**提示 (TIPs)**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/M5eJ10m-gM_V50sm7OiXg_group-44.png" size="60" isUploading="false" width="428" height="123" darkWidth="428" darkHeight="123" showCaption="false"}

为了防止在编辑问题和答案时 Inspector 切换到其他对象，请激活 Inspector 窗口右上角的 **Lock** 按钮。
:::

:::hint{type="info"}
Inspector 的项目名称可能会因 PC 的语言设置而异。本指南以简体中文编辑器界面中的 **问题列表** 和 **应用到 Scene** 等为基准进行说明。
:::

- **在 Scene 中查看**
  - 选择相应的问题对象，并将 Scene View 的视角移动到该位置。
  - 您可以使用此功能来检查和修改问题及门的位置。
- **⋯ 菜单**
  - 您可以 **复制此问题并添加**，或者 **删除问题**。
- **全部折叠 / 全部展开**
  - 一次性折叠或展开所有问题项目。

点击各项目的名称或箭头展开后，可以设置以下属性：

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/3VpmEFDw-Mm7jo1G2kF7g_group-39.png" size="80" isUploading="false" width="767" height="897" darkWidth="767" darkHeight="897" alt="StageManager" showCaption="false"}

- **问题文本**
  - 输入要响应该阶段玩家显示的问题。
    - 示例：你喜欢的服装风格是？
- **问题背景 (可选)**
  - 连接要显示在问题面板上的背景图片。
  - 如果不使用图片，可以留空。
- **答案 1、答案 2 …**
  - 这些项目对应各个门。展开后会显示以下两个属性。
  - **答案文本**
    - 输入要显示在每个门上的选项名称。
    - 示例：可爱风格
  - **答案图片 (可选)**
    - 当您希望选项和图片一起显示时使用。
    - 如果不使用图片，则仅显示文本。

### 添加和删除回答

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/qIeJ4vmqiKCRrYc9TuWgf_group-42.png" size="60" isUploading="false" width="767" height="897" darkWidth="767" darkHeight="897" alt="Answer" showCaption="false"}

您可以直接增加或减少每个问题的回答（门）数量。无需手动复制门对象。

- 点击回答列表下方的 **+ 添加答案 N** 按钮，该问题就会增加一个门，同时也会添加回答数据项。
- 点击每个回答右侧的删除按钮，会弹出确认窗口，删除后剩余回答的编号将自动重新排列。
- 每个问题 **至少需要 2 个** 回答。如果只剩下 2 个，删除按钮将被禁用。

### 应用问题和回答

在 Inspector 中修改内容后，**务必** 点击 **应用到 Scene**。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/dp9md17s48dkl-_-3VBQ7_group-40.png" size="80" isUploading="false" width="767" height="686" darkWidth="767" darkHeight="686" alt="Apply To Scene" showCaption="false"}

1. 输入问题和回答的文本及图片。
2. 点击列表下方的 **应用到 Scene** 按钮。
   - 如果输入的内容与 Scene 中的内容不同，按钮将显示为橙色，并显示“(有变更)”的提示。
3. 在 Scene View 的问题面板和选项门上，检查更改内容是否已反映。

如果 Scene 的内容与输入数据不同，按钮将显示为 **橙色**，并出现提示文字。

点击应用按钮后，问题文本、问题背景、答案文本、答案图片、问题对象名称以及 Localization csv 文件中的本地化键值将一并更新。

:::hint{type="success"}
**多语言问题与回答设置**
点击 **应用到 Scene** 后，以下键值将自动添加到 `ZW_LOCALIZATION_CHOICE_TOWER` 表格中：

- 问题：`STAGE_{Scene 名称}_{顺序}_QUESTION`
- 回答：`STAGE_{Scene 名称}_{顺序}_GATE_n`（`n` 为回答编号）

请在相应的表格中按语言输入其他语言的问题和回答。在 Unity Inspector 中设置问题与回答的基本内容，而其他语言的文案则在表格中进行管理。
:::

:::hint{type="danger"}
**注意事项**

- 请确保一个问题至少有 2 个门。
- 如果问题列表中提示检测到的问题数量与数据项数量不同，请检查是否有遗漏的问题或数据项。只有相互对应的项目才会应用到 Scene 中。
- 如果连接了回答图片，文本大小将根据图片显示自动调整。
:::

# 3. 添加和管理问题

## 添加新问题

当您想增加问题数量时，无需手动复制对象。

在 Inspector 下方的 **新建问题** 区域，只需点击一下按钮，即可在最后一个问题之后创建一个新问题。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/L9VqAl9jM0hBor0DtqQ9A_group-42.png" size="70" isUploading="false" width="767" height="897" darkWidth="767" darkHeight="897" showCaption="false"}

- **放置方式**
  - **重复上次间距：** 使用最后两个问题之间的间距进行放置。推荐用于问题间距均匀的基础布局。
  - **手动指定：** 按照下方“位移量”中输入的值隔开距离进行放置。
- **放置基准**
  - 显示当前决定位置的基准。
    - 示例：Question 2 → Question 3 间距重复
  - 如果问题少于 2 个，则无法测量间距，因此只能使用“手动指定”。
- **位移量**
  - 以最后一个问题为基准的 `X`、`Y`、`Z` 移动值。
  - 如果选择“重复上次间距”，将显示测量到的值，并且无法手动修改。
- **在 Scene View 中预览生成位置**
  - 勾选时，新问题的生成位置将以矩形框形式显示在 Scene View 中。
- **+ 添加问题 N**
  - 复制最后一个问题，并自动添加问题和回答的数据项及编号。

:::hint{type="danger"}
添加问题后，请**将问题文本和回答修改为您所需的内容，然后点击 应用到 Scene**。
:::

## 复制和删除问题

- ⋯ 菜单
  - **复制此问题并添加**：在问题列表的 ⋯ 菜单中选择。复制该问题的配置，并将其添加到最后一个问题之后。
  - **删除问题**：在 ⋯ 菜单中选择，然后在确认窗口中确定。剩余问题的编号将自动重新排列。
    - 如果只剩下一个问题，则无法删除。

:::hint{type="danger"}
**注意事项**

- 问题对象的编号和名称会自动管理。**请勿在 Hierarchy 中随意更改问题对象的名称。**
:::

## 插入问题与回答图片

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/NDrOdkrh8I1-DJEATItvS_imagesetting.png" size="70" isUploading="false" width="580" height="637" darkWidth="580" darkHeight="637" alt="ImageSetting" showCaption="false"}

1. 将图片文件添加到 Unity 的 **Project** 窗口中。
2. 选择该文件，在 Inspector 中将 **Texture Type** 设置为 **Sprite (2D and UI)**。
3. 将图片连接到 StageManager 的 **问题背景 (可选)** 或 **答案图片 (可选)** 槽位中。
4. 点击 **应用到 Scene** 以检查实际显示状态。

:::hint{type="success"}
**提示 (Tips)**

选项图片建议采用 **正方形** 或相似比例，以便在门内更容易区分。

如果只使用文本，适合性格测试；如果文本和图片一起使用，则非常适合时尚、食物等 **视觉比较重要的内容**。
:::

# 4. 设置游戏进行方式

## 设置 Choice GameManager

在 Hierarchy 中选择 `Choice_Template > Choice_GameManager`。

在 Inspector 的 **Game Rules** 中，您可以设置进度规则。

**Game Rules**

- **Allow Revote**
  - **激活时**，对于已经选择过的问题，玩家可以重新选择其他门。
  - **禁用时**，在初始化进度记录之前，玩家无法更改对问题的回答。
- **Enforce Stage Order**
  - **激活时**，玩家必须完成前面的问题后，才能选择下一个问题。
  - 用于按问题编号顺序进行的世界。
- **Keep Choices On Rejoin**
  - **激活时**，重新进入时会恢复之前的选择，并从最后通过的门后面继续开始。
  - **禁用时**，尚未完成所有问题的玩家将从第一个问题重新开始。完成所有问题的玩家的结果将被保留。

# 5. Sharing Zone

## 什么是 Sharing Zone？

完成所有问题的玩家可以在 **Choice\_SharingZone** 中查看自己的选择结果。如果同一个空间里有其他玩家，还可以互相比较选择结果。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/aa4vjVL1oi5_WO-lz_8VK_07-sharingzone-resultboards.png" size="80" isUploading="false" width="1920" height="1080" darkWidth="1920" darkHeight="1080" alt="SharingZone" showCaption="false"}

- 可以查看自己的选择结果。
- 可以与同一空间内的其他玩家比较结果。
- 可以将自己的结果保存为图片或分享至 ZEPETO 动态。

:::hint{type="danger"}
如果激活了 **Enforce Stage Order**，必须按顺序完成所有问题才能进入 Sharing Zone。
:::

## 更改 Sharing Zone 设计

模板已应用了默认的 UI 设计。**如果您想更改设计以符合世界的概念**，请设置以下项目。

在 Hierarchy 中选择 `Choice_Template > Choice_SharingZone`。

在 Inspector 窗口的 **Sharing Display Style Manager** 中，您可以更改以下图片。

- **Result Board Container Background**
  - 在 Sharing Zone 显示的整个结果面板区域的背景。
- **My Board Background**
  - 用于区分我的结果卡片的专属背景。
- **Choice Result Board Background**
  - 用于其他玩家结果卡片的基本背景。

:::hint{type="danger"}
**注意事项**

- 放入图片后，务必点击 **Apply Sharing Zone Images**。
- 结果卡片的文本、个人资料图片和选择结果可以在 Play 模式下查看。
- 建议不要更改 `Result_Board_Container`、`Choice_ResultBoard`、`My_Background` 对象名称。
:::

# 6. 测试世界

## 在 Play 模式中确认

完成设置后，点击 Unity 顶部的 **Play**，并按照实际的游玩顺序进行测试。

测试时，请在开启多人游玩后进行体验！
[快完成了— 接下来，让我们检查一下程序的基本设置：](docId\:Dg0Mghu21eFsgB39C40ps)

::::WorkflowBlock
:::WorkflowBlockItem
**确认第一个问题**

- 起始位置、问题和回答是否显示，通过门时 HUD 是否正常运作
:::

:::WorkflowBlockItem
**确认世界进度**

- 是否可以进入下一个问题，HUD 是否显示我的选择及选择比例，**Enforce Stage Order** 和 **Allow Revote** 设置是否按预期工作
:::

:::WorkflowBlockItem
**确认 Sharing Zone**

- 完成所有问题后进入 Sharing Zone
- 确认我的结果卡片和详细结果，图片保存和动态分享功能是否正常运作
:::

:::WorkflowBlockItem
**确认进度初始化**

- 在结果画面或 HUD 执行 Reset 后，记录和 HUD 是否初始化，并返回起始位置
:::
::::

## 发布前检查清单

:::hint{type="success"}
**发布世界前，请务必确认以下所有项目！**

- [ ] Scene 中只有一个 `Choice_Template`。
- [ ] 所有问题至少有 2 个回答（门）。
- [ ] 修改问题和回答后，点击了 **应用到 Scene**。
- [ ] 问题布局以及 **Allow Revote**、**Enforce Stage Order**、**Keep Choices On Rejoin** 的设置与策划一致。
- [ ] 修改 Sharing Zone 图片后，点击了 **Apply Sharing Zone Images**。
- [ ] 将所需语言的问题和回答输入到了 `ZW_LOCALIZATION_CHOICE_TOWER` 中。
- [ ] 完成所有问题后，会显示 Sharing Zone 和结果面板。
- [ ] 执行 Reset 后，可以从第一个问题重新顺利进行。
- [ ] 确保发布的 Scene 文件保持原样，没有复制或另存为其他名称。
:::

:::hint{type="danger"}
**注意事项**

**更新已发布的世界时，** 如果您复制 Scene 文件或另存为其他名称来进行更新，现有世界的选择记录将被重置。**请直接使用已发布的 Scene。**
:::

# 7. 常见问题 (FAQ)

### 我修改了问题和回答，但没有反映在 Scene 中

1. 请在 Hierarchy 中选择 Choice\_Template 对象。
2. 在 Inspector 的 **问题列表** 中，检查修改后的问题和回答是否输入正确。
3. 点击 **应用到 Scene** 按钮以应用更改。
4. 如果按钮上继续显示 **(有变更)** 的提示，请再次确认您的修改，然后再次点击 **应用到 Scene** 按钮。

### 添加的问题没有显示在列表中

1. 检查在 Hierarchy 中新添加的问题对象是否位于 Choice\_Template 下方。
2. 选择该问题对象，并确保在 Inspector 中连接了 **Stage 脚本**。
3. 如果 Play 模式正在运行，请停止后，检查问题对象是否已成功添加到 Hierarchy 中。
4. 重新选择 Choice\_Template，检查问题列表右侧数字角标上的问题数量是否正确反映。

### 选择记录没有保存或恢复

- 请检查 `Choice_GameManager` 的 **Keep Choices On Rejoin** 设置。如果处于禁用状态，尚未完成所有问题的玩家在重新进入时将从第一个问题开始。
- 发布后在进行 **更新** 时，如果您复制了 Scene 或另存为其他名称，由于指定了新的存储空间，原有的记录将不会显示。**为了保留现有记录，请直接使用已发布的 Scene。**

### 无法选择下一个问题的门

- 请检查是否激活了 **Enforce Stage Order**。
- 请检查是否已完成所有前面的问题。
- 请检查 StageManager 中的问题顺序与在 Scene 中放置的门的顺序是否一致。

### 无法进入 Sharing Zone

- 请检查是否还有未完成的问题。
- 请检查 HUD 上的进度数量是否与实际问题总数一致。
- 如果您更改了之前的选择，请再次完成所有必要的问题。

### Sharing Zone 的图片没有改变

- 请检查图片是否连接到了 `Choice_SharingZone` 的 **Sharing Display Style Manager** 中。
- 请检查是否点击了 **Apply Sharing Zone Images**。
- 请检查图片的 **Texture Type** 是否为 **Sprite (2D and UI)**。

### 我想更改 BGM

- 将要作为背景音乐的 BGM 文件添加到 Project 窗口后，请将其重命名为与要发布的 Scene 完全相同的名称。

# 8. 应用创意

通过更改问题内容、门图片以及阶段周围的空间，您可以将同一个模板应用于各种不同的世界。

- 比较食物、旅游目的地、时尚的 **喜好选择世界**
- 通过多个问题得出最终结果的 **性格测试**
- 与朋友比较选择结果的 **平衡游戏**
- 选择品牌产品或角色的 **粉丝参与型内容**
- 选择故事分岔路的 **故事型世界**

:::hint{type="success"}
**提示 (TIPs)**

尝试根据问题的主题装饰空间。
在选项门周围放置相关道具，可以帮助玩家更直观地理解选项。
:::

# 9. 使用 Sample Scene

Choice Template 附带了展示如何扩展模板的 Sample Scene。

您可以在 Assets/Choice\_Template/SampleScenes 文件夹中找到。

| **Scene**      | **配置**                     | **详细说明**            |
| -------------- | -------------------------- | ------------------- |
| **BasicScene** | 模板基本功能 + 跑酷地图 (Jump map)   | 在问题之间添加移动/游玩区间      |
| **PickMarket** | 模板基本功能 + 购物中心，购物车功能，向导 NPC | 根据问题结果的物体演出及 NPC 引导 |

:::hint{type="danger"}
**🚨 注意事项**

- Sample Scene 中已经放置了 **Choice\_Template**。
- 复制并使用 Sample Scene 时，请务必检查该 Scene 内 Choice\_Template 的 [4. 设置游戏进行方式](docId\:faymNxaYfg_9DpWWjMaGA) 是否已根据您的世界进行了合理设置。
- 游玩 Sample Scene 时，请在开启多人游玩后进行体验！
  [快完成了— 接下来，让我们检查一下程序的基本设置：](docId\:Dg0Mghu21eFsgB39C40ps)
:::

## BasicScene：将跑酷地图与平衡游戏相结合

**BasicScene** 是将平衡游戏与 **跑酷地图 (Jump map)** 相结合的示例。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/rjbZgQrVhYXT5U8hNzEMP_image-43.png" size="70" isUploading="false" width="917" height="516" darkWidth="917" darkHeight="516" alt="BasicScene" showCaption="false"}

1. 复制现有的路线区间或添加踏板以扩展移动路径。
2. 通过 **+ 添加问题 N** 创建问题，并使用 **放置方式** 的 **手动指定**根据路线调整位置。
3. 使用每个问题的 **在 Scene 中查看** 来确认位置，并在 Play 模式下尝试跑完全程。

## PickMarket：添加主题与创作元素

利用 **Choice\_Template**，您可以添加各种创作元素来制作属于自己的世界。

您可以自由修改和扩展 **PickMarket** 来制作新世界，或者仅仅通过提供的 Sample Scene 来学习功能和使用方法。

**PickMarket** 是一个将 Choice\_Template 的选项门与购物中心商品选择相连接的示例。玩家跟随向导 NPC 逛商店、选择商品，并将选中的商品收集到购物车中。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/LZb_CD6OupgXOwlLBIt-8_08-pickmarket-entrance.png" size="80" isUploading="false" width="1920" height="1080" darkWidth="1920" darkHeight="1080" alt="PickMarket" showCaption="false"}

### 游戏流程

1. **进入购物中心**：播放向上仰视的入场摄像机演出，NPC 引导您前往购物车区域。
2. **领取购物车**：抓住购物车并移动。如果在没有购物车的情况下前往第一家商店，NPC 会将您重新引导回购物车区域。
3. **按商店选择**：听取 NPC 的说明并穿过商品门。选中的商品会拿在手上或穿戴在身上，并在离开商店时放入购物车。
4. **最终区域**：完成五家商店的选择后，购物车会在 `FinalZone` 消失，选中的商品将漂浮在玩家周围。之后，您可以移动到结果面板和拍照空间。

### 探索创作元素

**1. 入场及商品摄像机演出**

这包括进入世界时播放的摄像机演出，以及选择商品时展示穿戴效果的摄像机演出。

如果想更改摄像机演出的详细设置，**在 Hierarchy 窗口中选择 System > SpawnPoint**，然后根据需要调整以下项目。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/apuB3T6sRkeu4oz5ykwaw_group-53.png" size="80" isUploading="false" width="796" height="684" darkWidth="796" darkHeight="684" alt="Camera" showCaption="false"}

- **Look Up Angle / Shot Distance / Hold Time**：入场摄像机的仰角、距离和维持时间。
- **Rejoin after finishing**：完成所有问题的玩家重新进入时，将其传送到 Sharing Zone 屏幕前方。
- **Disable Item Show**：激活时，将关闭在穿戴商品时照亮商品的摄像机演出。
- **Item Show Hold / Blend / Distance / Pitch**：商品展示摄像机的维持时间、切换时间、距离和角度。

**2. 购物车系统 (Zones)**

选中的商品在展示穿戴效果后会进入购物车。

在 Hierarchy 窗口中，依次导航至 **PickMarket > Zones > 01\_Shoes > LoaferZone**。

如果选择 **LoaferZone**，Inspector 窗口中会显示 **Zepeto Script (CartItemZone)** 配置项。

您可以选择任意 Zone 来修改其设置。您可以复制现有的 Zone 来创建新的 Zone，或者根据需要更改名称。

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/ZOd46_lAZirIwVi0pwdCo_group-49.png" size="80" isUploading="false" width="779" height="506" darkWidth="779" darkHeight="506" alt="CartItemZone" showCaption="false"}

**CartItemZone 设置**

- **Item Prefab：** 指定要向玩家展示的商品 Prefab。
- **Item Object Name：** 当 `Item Prefab` 为空时，用于在 Scene 中查找并复制同名对象。
- **Choice Group**：为同一问题下的商品共同输入的组名。如果在该组中选择了一个，就无法选择其他商品。
- **Wear Slot**：商品的穿戴位置。

| **Wear Slot**                  | **穿戴方式**       | **示例中使用的商品**                                                           |
| ------------------------------ | -------------- | ---------------------------------------------------------------------- |
| Head                           | 像帽子一样贴合头部尺寸穿戴  | Cap                                                                    |
| Eyes                           | 像眼镜一样贴合眼部位置穿戴  | Sunglasses                                                             |
| Ears                           | 像耳机一样覆盖耳朵穿戴    | Music（耳机）                                                              |
| Feet                           | 像鞋子一样左右对称穿在双脚上 | Sneakers, Loafer                                                       |
| Left Hand / Right Hand         | 松开购物车把手，托在手掌上  | Donut, Cake, Boba, MiniBag, Book, Game, Art, TeddyBear, Light, Speaker |
| Chest / Back / Hips / Shoulder | 附着在身体的相应位置     | (示例未使用)                                                                |

- **调整穿戴位置**
  - **Wear Offset / Wear Rotation / Wear Size Multiplier**：微调穿戴的位置、旋转和尺寸。如果商品看起来是反的，请尝试将 Wear Rotation 的 Y 更改为 90 / 180 / 270。

:::hint{type="success"}
**💡 提示**

在 Play 模式下调整穿戴位置可以更方便地进行查看。
由于更改的值在退出 Play 模式时会恢复，因此请记录下最终值，并在 **Edit 模式下重新输入**。
:::

**CartStowZone 设置**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/cStkGe9Z_1DBVDfE_UW_9_group-52.png" size="80" isUploading="false" width="779" height="634" darkWidth="779" darkHeight="634" alt="CartStowZone" showCaption="false"}

- **Choice Group**：输入与该商店的 `CartItemZone` 完全相同的值。选中商品进入购物车后，属于同一组的商店出口将关闭。
- **Stow On Exit**：如果关闭 (Off)，商品会在 **进入** 区域时放入购物车。如果开启 (On)，商品会在 **离开** 区域时放入购物车。如果开启，请将区域设置得足够宽，以覆盖整个商店。

**头顶的商品 (CartHalo)**

在最终区域完成购物车时，会在运行中自动添加 `CartHalo`，使选中的商品漂浮在玩家头部周围。

**3. 向导员工 NPC**

Scene 中的 PM\_Staff\_Concierge 是引导购物中心的 NPC。它负责介绍世界，带路前往购物车和商店入口，并对玩家的选择做出反应。

**员工 Avatar 及对话 (DepartmentStoreStaff)**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/ss6eQ00NR-9dK10_zMDhT_group-50.png" size="70" isUploading="false" width="796" height="858" darkWidth="796" darkHeight="858" showCaption="false"}

- **Zepeto Id**：用作 NPC 外观的 ZEPETO 账号 ID。请输入个人资料中的 ZEPETO ID，而不是昵称。请查阅 [2. NPC 物体](docId\:cQva_7zbfiPnMVlpY46Y5)。
- **Typing Interval**：对话逐字显示的速度（秒）。默认值为 0.032。
- **Auto Advance Delay**：自动进入下一句对话的延迟时间（秒）。默认值为 2.4。
- **Stop Player While Guiding**：激活时，在引导对话期间会停止玩家的移动。
- **Lead Player / Lead Distance**：NPC 走在前面，如果超前了这个距离（默认 3.5m），就会停下来等待。

**购物引导流程 (ShoppingGuideController)**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/iKOX-Jf-k7MmJinl6Z5of_group-51.png" size="70" isUploading="false" width="796" height="858" darkWidth="796" darkHeight="858" showCaption="false"}

- **Store Entrances / Store Areas**：NPC 等待的商店入口和商店内部区域。如果留空，则使用地图中的商店锚点 (Anchor)。
- **Final Point / Final Area**：NPC 最终引导到达的位置和到达判定区域。如果留空，则使用 FinalZone。
- **Show Floor Route**：在地面上显示通向目的地的箭头路径。
- **Show Goal Glow**：在下一个目的地（购物车、商店入口、出口、最终区域）的地面散发柔和的光芒。不会在门上发光，以免影响选择。
- **No Cart Block Distance**：如果在没有购物车的情况下接近第一家商店入口达到这个距离（默认 1.5m），NPC 会阻挡并引导您前往购物车区域。

### 将 PickMarket 改为您自己的主题

保持 PickMarket 的结构不变，仅更改内容，就可以应用于各种主题。

1. **更改问题**
   - 在 StageManager 中将问题和回答更改为咖啡厅主题，然后点击 **应用到 Scene**。（例如：“今天的饮品是？” → 拿铁 / 气泡水 / 冰沙）
2. **更改商品**
   - 将每个 CartItemZone 的 **Item Prefab** 或 **Item Object Name** 更改为新商品。
   - 根据商品设置 **Wear Slot**，并在 Play 模式下调整穿戴位置。
3. **增加商品（回答）**
   - 如果添加了门，请复制现有的商品区域（CartItemZone）和出口区域（CartStowZone），并根据新门的位置进行放置。
   - 新商品的 **Choice Group** 请输入与同商店其他商品完全相同的值。
4. **更改 NPC 对话**
   - 如果想更改 NPC 的对话，请使用 **ZW\_LOCALIZATION\_PICKMARKET.csv**。
5. **更改 NPC 外观**
   - 将 DepartmentStoreStaff 的 **Zepeto Id** 更改为装扮成店员的账号 ID。

**修改 PickMarket 时的注意事项**

:::hint{type="danger"}
**💡 修改 PickMarket 时的注意事项**

- **统一 Choice Group**：同一商店的 `CartItemZone` 和 `CartStowZone` 必须输入完全相同的值（包括大小写和拼写）。示例中的组名包括 `Shoes`、`Food`、`Fashion`、`Hobby`、`Home`。
- **关联回答与 NPC**：如果在 StageManager 中更改了回答文本，请同时相应地修改 `ShoppingGuideController` 中的 **Reaction Choices**。对话内容仅在 `ZW_LOCALIZATION_PICKMARKET.csv` 中修改。
- **遗留项目**：`ShoppingGuideController` 中的 **Sneakers Zone** 和 **Loafers Zone** 目前未使用，但会显示在 Inspector 中。请勿随意删除或更改其顺序。
- **地图移动与大小更改**：请确保同时检查并对齐放置在地图外的对象，例如 `SpawnPoint`、`PM_EntranceForecourt`、`PM_Staff_Concierge`、`PM_CitySkyline`（城市背景）、`PM_Guide_*Space`、`Zone` 下方的区域以及 `PM_ReflectionProbe_Cart`。
- **防止重复地图**：请勿同时激活两个具有相同锚点 (Anchor) 名称的地图。否则 NPC 可能会引用错误的锚点。
- **服务器模块**：其他玩家购物车的显示由 `World.multiplay/ServerModule/Modules/CartModule.ts` 负责。将 PickMarket 功能移植到其他项目时，必须一并带上该模块。
- **模板脚本**：PickMarket 的创作元素使用了 Choice Template 的公开功能。建议不要随意修改 `GameManager` 等模板的基础脚本。
:::

