Ce guide explique comment effectuer la migration de votre jeu Unity pour utiliser le dernier SDK Input. Le SDK 1.0.0-beta présente des améliorations substantielles par rapport à la version preview 0.0.4 précédente. Nous vous conseillons d'effectuer la migration depuis les versions preview précédentes dès que possible. Le SDK 0.0.4 continuera de fonctionner jusqu'en mars 2023.
Mettre à jour les références
Les classes ont reçu le préfixe Play
pour éviter les conflits de noms avec Unity.
Lorsque vous voyez un message d'erreur semblable à celui-ci :
Erreur CS0246 : le type ou le nom d'espace de noms "InputMappingProvider" est introuvable (manque-t-il une directive d'utilisation ou une référence d'assemblage ?)
vous devez ajouter le préfixe Play
au nom de la classe. Par exemple, InputMappingProvider
devient PlayInputMappingProvider
.
Mettre à jour chaque action d'entrée
InputAction
est désormais construit avec un appel à PlayInputAction.Create
au lieu de créer un struct
avec des champs nommés.
Recherchez tout code qui appelle new InputAction
:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
Remplacez-le par un appel à PlayInputAction.Create
:
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
Mettre à jour chaque groupe d'entrées
Comme InputAction
, InputGroup
utilise désormais un appel PlayInputGroup.Create
au lieu de vous obliger à renseigner manuellement un struct
.
Par conséquent, vous devez identifier tous les appels à new InputGroup
:
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
Remplacez-les par des appels à PlayInputGroup.Create
:
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
Mettre à jour le mappage d'entrées
InputMap
utilise également PlayInputMap.Create
au lieu de construire un nouveau struct.
Identifiez les appels à new InputMap
:
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
Remplacez-les par des appels à PlayInputMap.Create
:
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
Renommer les méthodes PlayInputMappingClient
Pour PlayInputMappingClient
, RegisterInputMappingProvider
a été renommé SetInputMappingProvider
.
Identifiez les appels à RegisterInputMappingProvider
:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
Remplacez-les par des appels à SetInputMappingProvider
.
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
UnregisterInputMappingProvider
a également été renommé ClearInputMappingProvider
et ne nécessite plus le InputMappingProvider
enregistré précédemment en tant que paramètre.
Identifiez les appels à UnregisterInputMappingProvider
:
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
Remplacez-les par ClearInputMappingProvider
:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();