מעבר ל-SDK לקליטת נתונים בגרסת 1.0.0 בטא

במדריך הזה מוסבר איך להעביר את המשחק ב-Unity כך שישתמש ב-Input SDK העדכני ביותר. ב-SDK בגרסה 1.0.0-beta יש שיפורים משמעותיים בהשוואה לגרסה הקודמת 0.0.4 שפורסמה בתצוגה המקדימה. חשוב לבצע את המעבר מהתצוגות המקדימות הקודמות בהקדם האפשרי. ערכת ה-SDK 0.0.4 תמשיך לפעול עד מרץ 2023.

עדכון ההפניות

הכיתות קיבלו את הקידומת Play כדי למנוע התנגשויות בשמות עם Unity. בכל פעם שמופיעה הודעת שגיאה שדומה לזו:

שגיאה CS0246: לא ניתן למצוא את שם הסוג או המרחב המשותף 'InputMappingProvider' (האם חסר לך הוראת using או הפניה למאגר?)

צריך להוסיף את הקידומת Play לשם הכיתה. לדוגמה, InputMappingProvider הופך לערך PlayInputMappingProvider.

עדכון כל InputAction

עכשיו InputAction נוצר באמצעות קריאה ל-PlayInputAction.Create, במקום ליצור struct חדש עם שדות עם שמות.

מאתרים קוד שמפעיל את new InputAction:

var driveAction = new InputAction
{
    ActionLabel = "Drive",
    UniqueId = (int)InputEventIds.DRIVE,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
    }
};

ומחליפים אותה בקריאה ל-PlayInputAction.Create:

var driveAction = PlayInputAction.Create(
    "Drive",
    (int)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        null
    )
);

עדכון כל קבוצת קלט

כמו ב-InputAction, גם ב-InputGroup יש עכשיו קריאה ל-PlayInputGroup.Create במקום לדרוש ממך למלא struct באופן ידני.

כלומר, עליך לאתר את כל השיחות אל new InputGroup:

var gameInputGroup = new InputGroup
{
    GroupLabel = "Game controls",
    InputActions = new List<InputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openStoreAction
    }
};

ומחליפים אותה בקריאה ל-PlayInputGroup.Create:

var gameInputGroup = PlayInputGroup.Create(
    "Game controls",
    new List<PlayInputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openStoreAction
    }
);

עדכון מפת הקלט

גם InputMap משתמש ב-PlayInputMap.Create במקום ליצור מבנה חדש.

איתור כל השיחות אל new InputMap:

return new InputMap
{
    InputGroups = new List<InputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    MouseSettings = new MouseSettings
    {
        AllowMouseSensitivityAdjustment = false,
        InvertMouseMovement = false
    }
};

ומחליפים אותה בקריאה ל-PlayInputMap.Create:

return PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

שינוי השם של השיטות של PlayInputMappingClient

עבור PlayInputMappingClient, השם של RegisterInputMappingProvider השתנה ל-SetInputMappingProvider.

לכן, יש לאתר שיחות אל RegisterInputMappingProvider:

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

ומחליפים אותם בקריאה ל-SetInputMappingProvider:

PlayInputMappingClient inputMappingClient =
    Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);

השם של UnregisterInputMappingProvider השתנה ל-ClearInputMappingProvider, והוא לא מחייב יותר את הפרמטר InputMappingProvider שרשמת בעבר.

מאתרים את כל השיחות למספר UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

מחליפים אותם ב-ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();