> 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/data/core-components.md).

# Core Components

<figure><img src="/files/Rp4csu5HSSB1YUegKYXz" alt=""><figcaption></figcaption></figure>

## **Tutorial Scene References (TSR)**

个绑定组件，包含对所有系统组件的引用。它还包含用于通过脚本手动调用教程步骤的公共包装方法。TSR在检视器中包含用于交互的公共字段：

* **Target Canvas（必需）。**&#x5728;此分配当前场景的UI画布。
* Target World Holder. 在此分配生成世界提示（2D/3D）的父对象。
* **Main Camera（必需）。**&#x5728;此分配当前场景的摄像机。
* Handle Camera Switching. 如果启用，当前摄像机被禁用或从场景中移除时，系统会尝试切换到另一个活动摄像机。
* Enable Debug. 如果启用，系统会将状态日志输出到控制台。

高级用法的其他设置：

* **CurrentDevice\_ATM（必需）& Current Scene.** 场景中当前ATM的唯一字符串名称。如果场景中存在多个ATM，应通过此字符串来区分它们。参见 [Adaptive Tutorial](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/advanced-adaptive-tutorial.md)。
* **InputTextStrings（必需）。**&#x5BF9;存储项目中教程每个部分所有文本和翻译的对象的引用。
* Autostart. 禁用此布尔值可防止教程自动启动。只有通过 `TurnOnTutorial()` 手动触发时才会运行。参见 [Manual Calls](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/advanced-manual-step-calls.md)。
* ForMobileBuildOnly. 如果此参数设置为True，教程将仅在移动设备上播放。这允许您在同一场景中为不同设备类型保留多个不同的ATM。
* ForPCBuildOnly. 如果此参数设置为True，教程将仅在桌面设备上播放。这允许您在同一场景中为不同设备类型保留多个不同的ATM。
* OnSkipTutorial(). 您可以在此添加应被调用以完成教程的函数（除了内置的提示隐藏功能）。
* 指向默认视觉设置和预制体的链接。参见 [Visual Prefabs](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/data/visuals-prefabs.md)。
* Auto Initialized. 首次将TutorialSystem添加到场景时自动初始化的标志。

## **Automatic Tutorial Maker (ATM)**

Automatic Tutorial Maker (ATM) 用于教程录制和生成的主要组件。不用于手动编辑。此脚本在录制期间识别每个操作的类型并为其生成最合适的提示。例如，当对象被移动到库存插槽中时，它识别这是一个拖拽操作并生成指针和文本标签来解释该操作。之后，可以在检视器中进行调整。参见 [Step Customization](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/step-customization.md)。ATM在检视器中包含用于交互的公共字段：

* Edit Tooltip Texts & Localization > 按钮，用于快速跳转到TSR中的`InputTextStrings`脚本化对象以编辑文本。
* Start Recording/Stop Recording按钮。在运行时可用。用于开始录制和生成教程，然后在完成时保存。
* 公共Step Sequence列表。此列表中的每个元素代表一个教程步骤。它包含有关步骤开始条件、执行和视觉显示的信息。
* Copy Sequence、Paste Sequence和Clear Sequence按钮。用于简化列表的手动操作：复制、粘贴和清空（包括关联的文本字符串）。

## **Step Sequence Player (SSP)**

负责教程步骤回放逻辑的主要组件。不用于手动编辑。此脚本查找玩家当前应该执行的步骤，跟踪输入以完成步骤，并为每个ATM单独保存已完成和未完成步骤的进度。SSP在检视器中包含用于交互的公共字段：

* Open Progress Files > 按钮，用于快速打开存储会话间进度JSON文件的文件夹。
* Reset Tutorial Progress按钮。在运行时可用。出于测试目的重置当前场景的教程进度。

## **Tutorial Visual Manager (TVM)**

此组件根据回放步骤帮助启用和销毁场景中的各种视觉提示。不用于手动编辑。

## **ClickData**

负责AutomaticTutorialMaker的StepSequence中教程步骤的内容和显示的脚本。

## **Input Controller**

此组件跟踪录制和回放的所有输入。不用于手动编辑。支持移动端和PC端。在检视器中包含公共字段：

* Input System Type用于在新旧输入系统之间切换。
* Min Hold Duration. 设置在Hold交互被识别之前必须经过的最小时间间隔。应大于0以区别于点击输入。
* Min and Max Swipe Distance、Swipe Angle Tolerance. 类似地，定义Swipe交互的最小持续时间和滑动距离（像素）。
* Min Drag Distance定义在Drag交互中对象被视为移动的最小距离。
* Joystick Axes包含Input Manager中手柄输入所需的轴名称。Joystick Mapping包含按索引的特定手柄按钮。参见 Joystick Input。

## **InputStringsScriptableObject**

包含教程本地化逻辑的脚本。它链接到TSR中的InputTextStrings对象。在脚本内部，您将预定义的AddCustomLanguage条目替换为public enum Language中的自定义语言。参见 [Localization](/zi-dong-jiao-cheng-sheng-cheng-qi-you-xi-nei-ti-shi-cn/usage-guide/advanced-localization.md)。

## **TutorialTrigger**

可以添加到任何对象上以手动触发ATM步骤的组件（Manually Call Template）。例如，当对象被摄像机中心瞄准时显示提示，停止瞄准时隐藏提示。它包含以下公共字段：

* **Linked Step Name（必需）。**&#x9700;要包含与此对象关联的视觉提示的ATM步骤名称。
* **Trigger（必需）。**&#x4E0E;对象交互以显示和隐藏提示所需的交互模板，例如Hover。
* Set Step Text和文本字段。当步骤开始时，这些本地文本将传递给ATM提示。您也可以传递键而不是直接文本，以便系统自动本地化。
* 附加字段：On Trigger Activated / Deactivated. 在此添加本地高亮逻辑：轮廓、放大、nudge等。

## **IrisCutoutMask**

个可附加到启用了Raycast Target的UI预制体图像的组件，用于"挖出"允许射线检测的区域。它用于阻止不需要的交互，同时保持目标区域可访问。该组件允许自定义挖出区域的形状和大小。'Enable Visual Mask'使用选定颜色在"孔洞"周围创建视觉区域。组件需要分配Target Image及其Rect Transform；如果未手动设置，将在Awake时自动完成。

## **Helpers**

**AutomaticTutorialMakerEditor, BackgroundManager, ComponentTypeSelector, GrayedAttribute, InputStringsScriptableObjectEditor, JoystickTipController, KeyboardInputHelper, KeyCodeExtensions, LocalizedTooltip, OpenLocalizationAttribute, ParameterSelector, ReadOnlyAttribute, ShowIfAttribute, StepSequencePlayerEditor, TutorialSceneReferencesEditor -** 用于清晰资源设计和输入优化的辅助组件。
