Choice Template 指南
摘要 | 这是一款面向创作者的模板,玩家可以通过穿过符合问题的门来选择自己的喜好,并在 Sharing Zone(分享区)中与其他玩家比较结果。 |
|---|---|
难度 | 中级(无需修改代码) |
类型 | 性格测试、平衡游戏、基于记录的社交分享 |
单人/多人游玩 | 多人游玩 |
📘 下载 Choice Template
🎥 Choice Template 视频指南 如果您更喜欢视频,请跟着下方的视频进行操作。 支持多语言字幕,观看时请开启字幕!
使用 Choice Template 制作平衡游戏世界
Choice Template 是一款面向创作者的模板,您可以创建让玩家通过穿过对应问题的门来选择自身喜好的世界。
创作者无需修改代码,即可更改问题、选项、阶段数量以及结果面板的图片。
当玩家完成所有阶段后,可以查看自己的选择结果,并在 Sharing Zone 中与其他玩家的结果进行比较。
只要按照本指南的顺序操作,就能制作出包含以下功能的选项型世界!
- 显示问题和选项图片的选项门
- 多个阶段按顺序连接的进行方式
- 保存并恢复玩家之前的选择记录
- 实时显示选择比例的 HUD
- 可以查看自己与其他玩家结果的 Sharing Zone
- 将选择结果保存为图片或分享至 ZEPETO 动态的功能
1. 放置模板
添加 Choice Template
Choice_Template Prefab 包含了运行 Choice Template 所需的所有对象,如选项门、HUD、结果面板以及 Sharing Zone。

- 在 Unity 的 Project 窗口中找到 Assets/Choice_Template/Choice_Template.prefab。
- 将 Choice_Template.prefab 拖拽到 Scene 或 Hierarchy 窗口中。
- 检查 Hierarchy 窗口,确认是否已生成一个 Choice_Template 对象。
如果您想利用 Sample Scene 更方便地开始,请参考 9. 使用 Sample Scene!
Choice Template 教程
首次将 Choice_Template 放置到 Scene 中时,会自动打开 Choice Template 教程窗口。该教程窗口将按照以下顺序引导您了解模板的主要设置位置:
- 了解模板结构
- 输入问题和答案
- 应用到 Scene
- 添加和管理问题
- 设置游戏进行方式
- 自定义 Sharing Zone
- 测试世界
请尝试点击 在 Inspector 中打开 按钮。Hierarchy 窗口中会自动选中该对象,您可以立即在 Inspector 窗口中进行设置。
如果想再次打开教程窗口怎么办?
在 Hierarchy 窗口中选择 Choice_Template,然后在 Inspector 窗口中点击 Open Choice Template Tutorial 按钮即可。
注意事项
- 一个 Scene 中请只放置一个 Choice_Template。
- 在完全了解其功能之前,建议不要删除模板内部的对象或断开连接。
- 请务必在 Edit 模式 下进行所有设置,而不是在 Play 模式下。
模板的基本结构
Choice_Template 主要由以下三个部分组成。

- Choice_UI
- 这是玩家可见的 UI 集合,例如 HUD(我的选择、进度、选择比例)、Toast 通知以及结果画面等。
- Choice_GameManager
- 管理问题的进行顺序、选择记录以及数据的保存与恢复。
- 每个问题(Choice_Stage)和选项门都放置在该对象下方。
- Choice_SharingZone
- 完成所有选择的玩家在此空间可以查看自己的结果,并查看其他玩家的结果。
提示 (TIP)
一开始请不要大幅更改模板的位置和大小,先在默认状态下测试一次。 确认基本运行正常后,再调整阶段间距并装饰周围环境,这样会更容易理解。
2. 设置问题与选项
使用 Stage Manager
使用 Choice_Template 对象 内的 StageManager,您可以在一个地方集中编辑各阶段显示的问题和选项。
请在 Hierarchy 窗口中选择 Choice_Template 对象。

提示 (TIPs)

为了防止在编辑问题和答案时 Inspector 切换到其他对象,请激活 Inspector 窗口右上角的 Lock 按钮。
Inspector 的项目名称可能会因 PC 的语言设置而异。本指南以简体中文编辑器界面中的 问题列表 和 应用到 Scene 等为基准进行说明。
- 在 Scene 中查看
- 选择相应的问题对象,并将 Scene View 的视角移动到该位置。
- 您可以使用此功能来检查和修改问题及门的位置。
- ⋯ 菜单
- 您可以 复制此问题并添加,或者 删除问题。
- 全部折叠 / 全部展开
- 一次性折叠或展开所有问题项目。
点击各项目的名称或箭头展开后,可以设置以下属性:

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

您可以直接增加或减少每个问题的回答(门)数量。无需手动复制门对象。
- 点击回答列表下方的 + 添加答案 N 按钮,该问题就会增加一个门,同时也会添加回答数据项。
- 点击每个回答右侧的删除按钮,会弹出确认窗口,删除后剩余回答的编号将自动重新排列。
- 每个问题 至少需要 2 个 回答。如果只剩下 2 个,删除按钮将被禁用。
应用问题和回答
在 Inspector 中修改内容后,务必 点击 应用到 Scene。

- 输入问题和回答的文本及图片。
- 点击列表下方的 应用到 Scene 按钮。
- 如果输入的内容与 Scene 中的内容不同,按钮将显示为橙色,并显示“(有变更)”的提示。
- 在 Scene View 的问题面板和选项门上,检查更改内容是否已反映。
如果 Scene 的内容与输入数据不同,按钮将显示为 橙色,并出现提示文字。
点击应用按钮后,问题文本、问题背景、答案文本、答案图片、问题对象名称以及 Localization csv 文件中的本地化键值将一并更新。
多语言问题与回答设置 点击 应用到 Scene 后,以下键值将自动添加到 ZW_LOCALIZATION_CHOICE_TOWER 表格中:
- 问题:STAGE_{Scene 名称}_{顺序}_QUESTION
- 回答:STAGE_{Scene 名称}_{顺序}_GATE_n(n 为回答编号)
请在相应的表格中按语言输入其他语言的问题和回答。在 Unity Inspector 中设置问题与回答的基本内容,而其他语言的文案则在表格中进行管理。
注意事项
- 请确保一个问题至少有 2 个门。
- 如果问题列表中提示检测到的问题数量与数据项数量不同,请检查是否有遗漏的问题或数据项。只有相互对应的项目才会应用到 Scene 中。
- 如果连接了回答图片,文本大小将根据图片显示自动调整。
3. 添加和管理问题
添加新问题
当您想增加问题数量时,无需手动复制对象。
在 Inspector 下方的 新建问题 区域,只需点击一下按钮,即可在最后一个问题之后创建一个新问题。

- 放置方式
- 重复上次间距: 使用最后两个问题之间的间距进行放置。推荐用于问题间距均匀的基础布局。
- 手动指定: 按照下方“位移量”中输入的值隔开距离进行放置。
- 放置基准
- 显示当前决定位置的基准。
- 示例:Question 2 → Question 3 间距重复
- 如果问题少于 2 个,则无法测量间距,因此只能使用“手动指定”。
- 位移量
- 以最后一个问题为基准的 X、Y、Z 移动值。
- 如果选择“重复上次间距”,将显示测量到的值,并且无法手动修改。
- 在 Scene View 中预览生成位置
- 勾选时,新问题的生成位置将以矩形框形式显示在 Scene View 中。
- + 添加问题 N
- 复制最后一个问题,并自动添加问题和回答的数据项及编号。
添加问题后,请将问题文本和回答修改为您所需的内容,然后点击 应用到 Scene。
复制和删除问题
- ⋯ 菜单
- 复制此问题并添加:在问题列表的 ⋯ 菜单中选择。复制该问题的配置,并将其添加到最后一个问题之后。
- 删除问题:在 ⋯ 菜单中选择,然后在确认窗口中确定。剩余问题的编号将自动重新排列。
- 如果只剩下一个问题,则无法删除。
注意事项
- 问题对象的编号和名称会自动管理。请勿在 Hierarchy 中随意更改问题对象的名称。
插入问题与回答图片

- 将图片文件添加到 Unity 的 Project 窗口中。
- 选择该文件,在 Inspector 中将 Texture Type 设置为 Sprite (2D and UI)。
- 将图片连接到 StageManager 的 问题背景 (可选) 或 答案图片 (可选) 槽位中。
- 点击 应用到 Scene 以检查实际显示状态。
提示 (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 中查看自己的选择结果。如果同一个空间里有其他玩家,还可以互相比较选择结果。

- 可以查看自己的选择结果。
- 可以与同一空间内的其他玩家比较结果。
- 可以将自己的结果保存为图片或分享至 ZEPETO 动态。
如果激活了 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
- 用于其他玩家结果卡片的基本背景。
注意事项
- 放入图片后,务必点击 Apply Sharing Zone Images。
- 结果卡片的文本、个人资料图片和选择结果可以在 Play 模式下查看。
- 建议不要更改 Result_Board_Container、Choice_ResultBoard、My_Background 对象名称。
6. 测试世界
在 Play 模式中确认
完成设置后,点击 Unity 顶部的 Play,并按照实际的游玩顺序进行测试。
测试时,请在开启多人游玩后进行体验! 快完成了— 接下来,让我们检查一下程序的基本设置:
确认第一个问题
- 起始位置、问题和回答是否显示,通过门时 HUD 是否正常运作
确认世界进度
- 是否可以进入下一个问题,HUD 是否显示我的选择及选择比例,Enforce Stage Order 和 Allow Revote 设置是否按预期工作
确认 Sharing Zone
- 完成所有问题后进入 Sharing Zone
- 确认我的结果卡片和详细结果,图片保存和动态分享功能是否正常运作
确认进度初始化
- 在结果画面或 HUD 执行 Reset 后,记录和 HUD 是否初始化,并返回起始位置
发布前检查清单
发布世界前,请务必确认以下所有项目!
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 文件保持原样,没有复制或另存为其他名称。
注意事项
更新已发布的世界时, 如果您复制 Scene 文件或另存为其他名称来进行更新,现有世界的选择记录将被重置。请直接使用已发布的 Scene。
7. 常见问题 (FAQ)
我修改了问题和回答,但没有反映在 Scene 中
- 请在 Hierarchy 中选择 Choice_Template 对象。
- 在 Inspector 的 问题列表 中,检查修改后的问题和回答是否输入正确。
- 点击 应用到 Scene 按钮以应用更改。
- 如果按钮上继续显示 (有变更) 的提示,请再次确认您的修改,然后再次点击 应用到 Scene 按钮。
添加的问题没有显示在列表中
- 检查在 Hierarchy 中新添加的问题对象是否位于 Choice_Template 下方。
- 选择该问题对象,并确保在 Inspector 中连接了 Stage 脚本。
- 如果 Play 模式正在运行,请停止后,检查问题对象是否已成功添加到 Hierarchy 中。
- 重新选择 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. 应用创意
通过更改问题内容、门图片以及阶段周围的空间,您可以将同一个模板应用于各种不同的世界。
- 比较食物、旅游目的地、时尚的 喜好选择世界
- 通过多个问题得出最终结果的 性格测试
- 与朋友比较选择结果的 平衡游戏
- 选择品牌产品或角色的 粉丝参与型内容
- 选择故事分岔路的 故事型世界
提示 (TIPs)
尝试根据问题的主题装饰空间。 在选项门周围放置相关道具,可以帮助玩家更直观地理解选项。
9. 使用 Sample Scene
Choice Template 附带了展示如何扩展模板的 Sample Scene。
您可以在 Assets/Choice_Template/SampleScenes 文件夹中找到。
Scene | 配置 | 详细说明 |
|---|---|---|
BasicScene | 模板基本功能 + 跑酷地图 (Jump map) | 在问题之间添加移动/游玩区间 |
PickMarket | 模板基本功能 + 购物中心,购物车功能,向导 NPC | 根据问题结果的物体演出及 NPC 引导 |
🚨 注意事项
- Sample Scene 中已经放置了 Choice_Template。
- 复制并使用 Sample Scene 时,请务必检查该 Scene 内 Choice_Template 的 4. 设置游戏进行方式 是否已根据您的世界进行了合理设置。
- 游玩 Sample Scene 时,请在开启多人游玩后进行体验! 快完成了— 接下来,让我们检查一下程序的基本设置:
BasicScene:将跑酷地图与平衡游戏相结合
BasicScene 是将平衡游戏与 跑酷地图 (Jump map) 相结合的示例。

- 复制现有的路线区间或添加踏板以扩展移动路径。
- 通过 + 添加问题 N 创建问题,并使用 放置方式 的 手动指定根据路线调整位置。
- 使用每个问题的 在 Scene 中查看 来确认位置,并在 Play 模式下尝试跑完全程。
PickMarket:添加主题与创作元素
利用 Choice_Template,您可以添加各种创作元素来制作属于自己的世界。
您可以自由修改和扩展 PickMarket 来制作新世界,或者仅仅通过提供的 Sample Scene 来学习功能和使用方法。
PickMarket 是一个将 Choice_Template 的选项门与购物中心商品选择相连接的示例。玩家跟随向导 NPC 逛商店、选择商品,并将选中的商品收集到购物车中。

游戏流程
- 进入购物中心:播放向上仰视的入场摄像机演出,NPC 引导您前往购物车区域。
- 领取购物车:抓住购物车并移动。如果在没有购物车的情况下前往第一家商店,NPC 会将您重新引导回购物车区域。
- 按商店选择:听取 NPC 的说明并穿过商品门。选中的商品会拿在手上或穿戴在身上,并在离开商店时放入购物车。
- 最终区域:完成五家商店的选择后,购物车会在 FinalZone 消失,选中的商品将漂浮在玩家周围。之后,您可以移动到结果面板和拍照空间。
探索创作元素
1. 入场及商品摄像机演出
这包括进入世界时播放的摄像机演出,以及选择商品时展示穿戴效果的摄像机演出。
如果想更改摄像机演出的详细设置,在 Hierarchy 窗口中选择 System > SpawnPoint,然后根据需要调整以下项目。

- 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,或者根据需要更改名称。

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。
💡 提示
在 Play 模式下调整穿戴位置可以更方便地进行查看。 由于更改的值在退出 Play 模式时会恢复,因此请记录下最终值,并在 Edit 模式下重新输入。
CartStowZone 设置

- Choice Group:输入与该商店的 CartItemZone 完全相同的值。选中商品进入购物车后,属于同一组的商店出口将关闭。
- Stow On Exit:如果关闭 (Off),商品会在 进入 区域时放入购物车。如果开启 (On),商品会在 离开 区域时放入购物车。如果开启,请将区域设置得足够宽,以覆盖整个商店。
头顶的商品 (CartHalo)
在最终区域完成购物车时,会在运行中自动添加 CartHalo,使选中的商品漂浮在玩家头部周围。
3. 向导员工 NPC
Scene 中的 PM_Staff_Concierge 是引导购物中心的 NPC。它负责介绍世界,带路前往购物车和商店入口,并对玩家的选择做出反应。
员工 Avatar 及对话 (DepartmentStoreStaff)

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

- 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 的结构不变,仅更改内容,就可以应用于各种主题。
- 更改问题
- 在 StageManager 中将问题和回答更改为咖啡厅主题,然后点击 应用到 Scene。(例如:“今天的饮品是?” → 拿铁 / 气泡水 / 冰沙)
- 更改商品
- 将每个 CartItemZone 的 Item Prefab 或 Item Object Name 更改为新商品。
- 根据商品设置 Wear Slot,并在 Play 模式下调整穿戴位置。
- 增加商品(回答)
- 如果添加了门,请复制现有的商品区域(CartItemZone)和出口区域(CartStowZone),并根据新门的位置进行放置。
- 新商品的 Choice Group 请输入与同商店其他商品完全相同的值。
- 更改 NPC 对话
- 如果想更改 NPC 的对话,请使用 ZW_LOCALIZATION_PICKMARKET.csv。
- 更改 NPC 外观
- 将 DepartmentStoreStaff 的 Zepeto Id 更改为装扮成店员的账号 ID。
修改 PickMarket 时的注意事项
💡 修改 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 等模板的基础脚本。