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

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

עדכון קובצי עזר

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

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

חובה להוסיף את הקידומת Play לשם הכיתה. לדוגמה, InputMappingProvider הופך ל-PlayInputMappingProvider.

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

המבנה 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)
);

שינוי השם של methods של PlayInputMappingClient

השם של RegisterInputMappingProvider עבור PlayInputMappingClient השתנה ל- 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();