Advanced: Adaptive Tutorial

Switching tutorial design between devices.

如果您的游戏面向 2 个或更多设备,提示可能会有所不同。例如,PC 端需要“点击”提示,而移动端需要“触摸”提示。系统支持针对不同设备的教程适配。

每个设备都需要一个独立的 ATM,并配备自己的提示。此方法用于避免死板的匹配矩阵,并允许为不同设备更灵活地自定义提示。

因此,要为多设备创建自适应教程:

  1. 为每种设备类型在场景中添加独立的 TutorialSystem(例如,一个用于 PC,一个用于移动设备)。

  2. 同一场景中的 ATM 在 TSR 中应具有唯一的 "currentDeviceATM",例如单独的 "ATM_Mobile" 和单独的 "ATM_Gamepad"。

  3. 为每个 ATM 分配针对设备的独特提示。不同设备的 ATM 之间不互相关联,使得不同设备的教程可以包含独特步骤,而不依赖死板的匹配矩阵。建议为每种设备单独编写教程。

  4. 在 TSR 中禁用 Autostart,以防止特定 ATM 在未调用 TurnOnTutorial 命令时自动启动。或者保持 Autostart 启用,并在一个 ATM 中设置 forMobileBuildOnly,在另一个 ATM 中设置 forPCBuildOnly,使其仅在指定设备上自动激活。

  5. 要启用/禁用特定 ATM,请使用 TSR 中的方法 TurnOffTutorial 和 TurnOnTutorial。例如:

[SerializeField] private TutorialSceneReferences tutorialDesktop;
[SerializeField] private TutorialSceneReferences tutorialMobile;
[SerializeField] private TutorialSceneReferences tutorialGamepad;

private TutorialSceneReferences currentTutorial;

// 假设此函数返回类似 "Desktop"、"Mobile" 或 "Gamepad" 的字符串
private void MethodForDeviceDetection()
{ 
    tutorialDesktop?.TurnOffTutorial();
    tutorialMobile?.TurnOffTutorial();    
    tutorialGamepad?.TurnOffTutorial();

    string deviceType = GetDeviceType();

    switch (deviceType)
    {
    case "Desktop":
        currentTutorial = tutorialDesktop;
        break;

    case "Mobile":
        currentTutorial = tutorialMobile;
        break;

    case "Gamepad":
        currentTutorial = tutorialGamepad;
        break;

    default:
        Debug.LogError("Device type not recognized!");
        break;
    }

    // 仅在所选教程不为 null 时启用它
    currentTutorial?.TurnOnTutorial();
}

// 获取设备类型的示例方法
private string GetDeviceType()
{
if (Input.GetJoystickNames().Length > 0)
    return "Gamepad";
if (Application.isMobilePlatform)
    return "Mobile";
return "Desktop";
}

场景中多个 ATM 的保存和本地化已适配,无需额外配置。在游戏进度中途切换设备可能需要额外的进度同步。

Last updated