> 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/advanced-manual-step-calls.md).

# Advanced: Manual Step Calls

在此，我们通过 TutorialSceneReferences (TSR) 中的公共封装方法手动处理步骤调用逻辑。

1. 在将调用步骤的脚本中，**创建对 TSR 的引用**。例如: `[SerializeField] private TutorialSceneReferences sceneReferences;`
2. 根据所需结果使用公共方法调用：

<table><thead><tr><th width="216">Method in TSR</th><th width="260">Description</th><th>Call Example</th></tr></thead><tbody><tr><td>IsStepDisplaying(int stepIndex)</td><td>检查步骤当前是否正在播放。</td><td>if (IsStepDisplaying(0)) {}</td></tr><tr><td>IsStepDone(int stepIndex)</td><td>检查步骤是否已完成。</td><td>if (IsStepDone(0)) {}</td></tr><tr><td>IsStepManualStart(int stepIndex)</td><td>检查步骤是否需要手动触发。</td><td>if (IsStepManualStart(0)) {}</td></tr><tr><td>TurnOffTutorial()</td><td>关闭教程。在同一场景中切换不同教程时很有用。</td><td><code>sceneReferences.TurnOnffTutorial();</code></td></tr><tr><td>TurnOnTutorial()</td><td>启动场景上的教程。在Autostart设置为false时很有用。</td><td><code>sceneReferences.TurnOnTutorial();</code></td></tr><tr><td>TranslateAllTutorial(InputStringsScriptableObject.Language language)</td><td>将所有教程提示翻译成支持的语言之一。</td><td><code>sceneReferences.InputStringsScriptableObject.Language.Italian);</code></td></tr><tr><td>TranslateAllTutorialByString(string language)</td><td>将所有教程提示翻译成CSV文件中存在的任何语言(查找带有此字符串的标题)。</td><td><code>sceneReferences.TranslateAllTutorialByString("Polish");</code></td></tr><tr><td>ChangeStepVisualText(int stepIndex, string textValue, TextToChange textField)</td><td>用于在运行时向所选步骤的所选提示传递自定义文本。</td><td><code>sceneReferences.ChangeStepVisualText(2, "Your text", TextToChange.PointerText)</code></td></tr><tr><td>StartTutorialStep(int stepIndex)</td><td>按索引启动特定教程步骤并禁用其他步骤。</td><td><code>sceneReferences.StartTutorialStep(2);</code></td></tr><tr><td>AsyncStartTutorialStep(int stepIndex)</td><td>按索引启动特定教程步骤且不禁用其他步骤。</td><td><code>sceneReferences.AsyncStartTutorialStep(2);</code></td></tr><tr><td>StartTutorialStepWithTargets(int stepIndex, List targetObjects, bool stopOtherSteps)</td><td>使用自定义目标 GameObject 启动教程步骤。</td><td><code>sceneReferences.ForceCompleteStep(2, myGameObjectList, false);</code></td></tr><tr><td>ForceCompleteStep(int stepIndex)</td><td>通过将步骤状态设置为"Done"来结束步骤，无论完成条件如何。</td><td><code>sceneReferences.ForceCompleteStep(2);</code></td></tr><tr><td>ForceCompleteTutorial()</td><td>完成场景上的所有教程步骤且无例外，标记为Done。</td><td><code>sceneReferences.ForceCompleteTutorial();</code></td></tr><tr><td>SkipTutorial()</td><td>跳过教程步骤，通过使用ForceCompleteTutorial或通过自定义逻辑(仅完成选定的步骤)。</td><td><code>sceneReferences.SkipTutorial();</code></td></tr><tr><td>SkipActiveTutorialModule()</td><td>根据指定的步骤列表有选择地跳过教程。</td><td><code>sceneReferences.SkipActiveTutorialModule();</code></td></tr><tr><td>ResetTutorialStep(int stepIndex)</td><td>通过将步骤状态设置为"NotDoneYet"来禁用步骤及其视觉元素。</td><td><code>ResetTutorialStep(0);</code></td></tr><tr><td>HideTutorial()</td><td>重置所有当前显示的教程步骤。</td><td><code>sceneReferences.HideTutorial();</code></td></tr><tr><td>ContinueTutorial()</td><td>重置后，尝试自动恢复先前暂停的步骤。</td><td><code>sceneReferences.ContinueTutorial();</code></td></tr></tbody></table>

3. 建议将从脚本调用的步骤的 Start Step 设置为 Manually Call，以确保对执行过程的统一控制。
4. 任何 UI Graphic 预制件中的 Confirm Button 也可以调用该预制件中 UIGraphicAnimation 脚本的公共方法。

<table><thead><tr><th width="200">UIGraphicAnimation Method</th><th width="275">Description</th><th>Call Example</th></tr></thead><tbody><tr><td>InitializeByConfirm()</td><td>在按钮点击时触发，将步骤中的 BlockedByButton 设置为 false。然后，步骤将继续，直到玩家满足主要条件。</td><td><img src="/files/SpO750lgvFTYnqFQUAgn" alt="" data-size="original"></td></tr><tr><td>FinishStep()</td><td>也可以通过按钮触发，在点击时立即完成该步骤。</td><td><img src="/files/0IGy0IYXdme5RHEJ5STm" alt="" data-size="original"></td></tr><tr><td>FinishStepAndSkipTutorial()</td><td>也可以通过按钮触发，点击后完成步骤并跳过整个教程。</td><td></td></tr></tbody></table>
