Advanced: Adaptive Tutorial
Switching tutorial design between devices.
如果您的游戏面向 2 个或更多设备,提示可能会有所不同。例如,PC 端需要“点击”提示,而移动端需要“触摸”提示。系统支持针对不同设备的教程适配。
每个设备都需要一个独立的 ATM,并配备自己的提示。此方法用于避免死板的匹配矩阵,并允许为不同设备更灵活地自定义提示。
因此,要为多设备创建自适应教程:
为每种设备类型在场景中添加独立的 TutorialSystem(例如,一个用于 PC,一个用于移动设备)。
同一场景中的 ATM 在 TSR 中应具有唯一的 "currentDeviceATM",例如单独的 "ATM_Mobile" 和单独的 "ATM_Gamepad"。
为每个 ATM 分配针对设备的独特提示。不同设备的 ATM 之间不互相关联,使得不同设备的教程可以包含独特步骤,而不依赖死板的匹配矩阵。建议为每种设备单独编写教程。
在 TSR 中禁用 Autostart,以防止特定 ATM 在未调用 TurnOnTutorial 命令时自动启动。或者保持 Autostart 启用,并在一个 ATM 中设置 forMobileBuildOnly,在另一个 ATM 中设置 forPCBuildOnly,使其仅在指定设备上自动激活。
要启用/禁用特定 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