Effectuer la migration vers le SDK Input 1.0.0-beta

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();