> For the complete documentation index, see [llms.txt](https://octanta-studio.gitbook.io/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://octanta-studio.gitbook.io/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/step-customization.md).

# Step Customization

{% hint style="info" %}
为了通用使用，将 Interaction 设置为 Manually Call，并将 Step Start 设置为 Manually Call。将所有必需的提示分配到步骤的视觉元素，通过脚本触发步骤，并在需要时通过脚本完成步骤。
{% endhint %}

**在 ATM 中打开 Step Sequence 列表。**

<figure><img src="/files/3UtMUsBEGfJOkHlWl2N8" alt=""><figcaption><p>Step</p></figcaption></figure>

该列表包含项目——玩家需要执行的步骤。最初，这些步骤按顺序记录，一个步骤在另一个步骤之后激活。在此可编辑每个步骤的逻辑。

* Step Name字段用于输入步骤名称，以便通过字符串而不是索引进行手动引用。
* Step Replay（Reusable / Play Once / Play Once Per Session）——确定此提示可以显示多少次的字段。
* Manually Call Template - 如果启用，将步骤简化为手动调用条件而不是自动触发。此类步骤可以从脚本手动调用或通过触发器设置。请参见下面的步骤启动逻辑。
* Step State字段为只读，显示运行时的步骤状态（Done - 已完成，Displaying - 活跃，Not Done Yet - 尚未完成）。
* Blocked By Time Delay字段为只读。如果设置了Start Delay，该步骤在存在指定时长之前不会启动。这是用于启动步骤的附加功能，例如通过"Tag"搜索对象。因为同时运行时，生成的对象可能未被找到。
* Blocked By Time字段为只读。如果设置了Min Time Amount，该步骤在存在指定时长之前不会完成。这是防止误点击意外关闭步骤的附加功能。
* Blocked By Button字段为只读。如果步骤包含带确认按钮的图形，只有按下该按钮才能解锁步骤，使执行继续。

**请根据需要编辑每个步骤。**

<div><figure><img src="/files/5vvp3FjbviBTLbySfPTX" alt=""><figcaption><p>Start condition</p></figcaption></figure> <figure><img src="/files/UaHY4W8Egr3YfCN06NhD" alt=""><figcaption><p>Completion condition</p></figcaption></figure> <figure><img src="/files/wfkDCi3irZ39xJ5Kwj19" alt=""><figcaption><p>Target details</p></figcaption></figure> <figure><img src="/files/qswCfiZrbfRhOoZQGb9F" alt=""><figcaption><p>Additional methods</p></figcaption></figure></div>

**要更改步骤的启动逻辑：**

* 要防止步骤自动启动，请将Start Step设置为Manually Call。步骤将等待脚本触发或按钮点击。可使用TutorialSceneReferences脚本中的公共方法，例如`StartTutorialStep(0);`来启动步骤编号0。请参阅[Manual Step Calls](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/advanced-manual-step-calls.md)。
* 或者，勾选Manually Call Template复选框。这将提供一个用于播放步骤的触发器模板。默认情况下，Trigger字段等待来自对象的外部调用，但您也可以配置提示通过与对象的Hover/Click/ScreenCenter交互来触发，例如，任何标记为InteractiveObject的对象（Check Object = By Tag，Compare Tag = 'InteractiveObject'）。
* 如果希望步骤在前一步完成后立即启动，请将Start Step保持为Auto After Previous Step。如果设置为Element 0，则在Start()时初始化。
* 要启用序列中多个步骤异步启动，请将组中每个步骤的Execute In Parallel复选框勾选为true，并为它们分配相同的Parallel Group ID。这样，组内所有步骤会同时启动，但每个步骤仅在满足其特定条件时完成。
* 设置Start Delay时间，例如0.5f，以延迟启动步骤。推荐用于"By Tag"和"By Layer"交互。Min Time Amount——提示在响应完成所需的输入之前存在的时间。Min Existence Time——提示在可以被禁用之前存在的时间。

**要更改步骤被视为完成的逻辑：**

* 要修改玩家预期执行的操作类型，请从支持列表中选择Interaction类型。请参阅[Supported Input](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/data/supported-input.md)。例如，Click——玩家必须左键点击或触摸目标。KeyCode——玩家必须按下KeyCodes列表中列出的所有目标键，顺序不限。
* 要更改玩家交互目标的定义方式，请从支持列表中选择Check Interaction类型。例如，Click+ByGameObject = 玩家必须点击场景中的特定对象。Click+ByTag = 玩家必须点击场景中具有该标签的任意对象。Click+ByLayer = 玩家必须点击场景中具有该图层的任意对象。Click+AnyTarget = 玩家可以点击任意位置以完成步骤。这适用于不需要目标的情况，例如键盘输入。Click+ByType将等待点击指定类型（2D、3D、UI）的任意对象。
* 要直接设置目标及其类型，可使用多个列表。例如特定的GameObject、标签、图层、键盘按键，以及用于指定对象类型（2D、3D、UI）的列表。使用这些列表以补充Check Interaction。例如，如果选择ByTag，请确保Tags列表中包含将使用的标签。
* 如果设置了Min Time Amount，步骤在指定时长过去之前不会记录用于完成的输入。这是防止误点击意外关闭步骤的附加功能。
* 如果设置了Min Existence Time，步骤在指定时长过去之前无法完成。这是防止误点击意外关闭步骤的附加功能。

**要为步骤添加额外逻辑，请使用 Additional step behaviour 字段。**&#x5728;教程步骤开始时添加触发的方法。在步骤完成时添加触发的方法。适合添加到这些字段的方法包括：

* 通过脚本暂停/恢复游戏时间
* 收集完成情况分析数据
* 应用/移除背景模糊
* 禁用除必需输入以外的所有其他输入，并在之后重新启用
* 触发额外动画，例如步骤完成时的指针上升效果
* 显示整体学习进度，例如填充进度条
* 通过触觉振动提供反馈

**要更改视觉呈现**，请在 Visual Tips 和 Localization Reference 字段中填写预制件和文本字符串。不同类型的提示互不排斥，使用独立设置。该资源包含可在此处附加或作为参考创建自定义提示的各种预制件。请参阅 [Visual Prefabs](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/data/visuals-prefabs.md)。

<table><thead><tr><th width="416">Adding visuals</th><th>Fields</th></tr></thead><tbody><tr><td><ul><li>要用“UI Pointer”提示说明步骤，请将所需指针预制件分配到 Pointer Prefab 字段。要为指针附加文本，请填写 Pointer Text 字段。</li><li>要用“UI Graphic”提示说明步骤，请将所需图形预制件分配到 Graphic Prefab 字段。要为图形附加文本，请填写 Graphic Text 字段。</li><li>要额外指示最终目标对象，例如拖放步骤的终点，请将 hover 预制件分配到 Hover Prefab 字段。这是另一个标准 UI Pointer，作为步骤的补充。</li><li>要用“World Pointer”提示说明步骤，请将所需指针预制件分配到 World Pointer Prefab 字段。要为指针附加文本，请填写 World Pointer Text 字段。</li><li>要用“World Graphic”提示说明步骤，请将所需图形预制件分配到 World Graphic Prefab 字段。要为图形附加文本，请填写 World Graphic Text 字段。</li><li>要额外指示最终目标对象，例如拖放步骤的终点，请将 hover 预制件分配到 World Hover Prefab 字段。这是另一个标准 World Pointer，作为步骤的补充。</li></ul></td><td><img src="/files/BefVFd90alvpr4puikUb" alt="" data-size="original"></td></tr></tbody></table>

**要通过遮罩阻止除必需对象外的所有射线检测**，请将通用 UI Transparent Mask 预制件分配到 Hover Prefab 字段，并在 IrisCutoutMask 组件中设置合适的剪裁尺寸和形状。

**要更改PointerText、GraphicText、WorldPointerText、WorldGraphicText中的文本值：**

* 在TSR > InputTextStrings对象中编辑文本值，其中存储了所有提示文本。
* 要保存当前文本值，请使用专用按钮将其导出为CSV文件。
* 使用内部本地化系统时，在步骤中启用Use CSV Table Keys，并输入翻译表中的键而不是直接文本。这可确保会话期间自动翻译。
* 默认情况下，步骤使用英语，每个视觉元素使用单个输入字段。要实现更灵活的文本自定义和本地化，请参阅[Localization](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/advanced-localization.md)（用于翻译）或[Manual Calls](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/advanced-manual-step-calls.md)（用于在执行期间简单替换文本）。

**要添加额外的工具提示元素或文本**，只需将其添加到预制体中。如果您需要不依赖ATM的自管理本地化文本，请使用LocalizedTooltip组件，如Graphic Popup Skip Tutorial示例所示。

**要暂停或恢复教程**，例如在游戏暂停或打开设置时，使用TSR中的辅助方法：HideTutorial()和ContinueTutorial()。

{% hint style="info" %}
**请勿忘记保存更改。**&#x5EFA;议解包 ATM 预制件，并为每个场景使用独立实例。
{% endhint %}
