Розширене: Адаптивний Туторіал

Перемикання дизайну туторіалу між пристроями.

Якщо ваша гра призначена для 2+ пристроїв, підказки можуть відрізнятися. Наприклад, для ПК потрібна підказка "клік", а для мобільних - підказка "дотик". Система підтримує адаптацію туторіалу для цього. Кожен пристрій вимагатиме окремого ATM з власними підказками. Цей підхід використовується, щоб уникнути жорсткої матриці відповідності та дозволяє більш гнучке налаштування підказок для різних пристроїв. Отже, щоб створити адаптивний туторіал для кількох пристроїв:

  1. Додайте окремий TutorialSystem на сцену для кожного типу пристрою (наприклад, один для ПК, один для мобільних).

  2. ATM на одній сцені повинні мати унікальні "currentDeviceATM" в TSR. Наприклад, окремий "ATM_Mobile" і окремий "ATM_Gamepad".

  3. Призначте унікальні підказки для кожного ATM, адаптовані для пристрою. ATM для різних пристроїв не пов'язані між собою, щоб туторіали для різних пристроїв могли враховувати унікальні кроки і не залежати від жорсткої матриці відповідності. Рекомендується писати туторіал для кожного пристрою окремо.

  4. Вимкніть Autostart в TSR, щоб конкретний ATM не запускався автоматично без команди TurnOnTutorial. Або залиште Autostart увімкненим, а в одному ATM призначте forMobileBuildOnly, а в іншому - forPCBuildOnly, щоб вони самі вмикалися лише на певних пристроях.

  5. Для увімкнення/вимкнення конкретного ATM використовуйте методи: TurnOffTutorial, TurnOnTutorial в TSR. Наприклад:

[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