במדריך הזה מוסבר איך להעביר את המשחק ב-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();