Esegui la migrazione all'SDK di immissione 1.0.0-beta

Questa guida descrive come eseguire la migrazione del tuo gioco Unity per utilizzare la versione più recente SDK di input. L'SDK 1.0.0-beta presenta miglioramenti sostanziali rispetto alla versione l'anteprima precedente di 0.0.4. Dovresti eseguire la migrazione dalle anteprime precedenti appena il più possibile. L'SDK 0.0.4 continuerà a funzionare fino a marzo 2023.

Aggiorna riferimenti

Le classi hanno ricevuto il prefisso Play per evitare conflitti di denominazione con Unity. Ogni volta che viene visualizzato un messaggio di errore simile al seguente:

error CS0246: Il nome del tipo o dello spazio dei nomi "InputMappingProvider" non poteva essere trovato (manchi una direttiva use o un riferimento di tipo Assembly?)

devi aggiungere il prefisso Play al nome della classe. Ad esempio: InputMappingProvider diventa PlayInputMappingProvider.

Aggiorna ogni InputAction

InputAction ora viene creato con una chiamata a PlayInputAction.Create, anziché alla creazione di un nuovo struct con campi denominati.

Individua tutti i codici che chiamano new InputAction:

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

e sostituiscilo con una chiamata a PlayInputAction.Create:

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

Aggiorna ogni InputGroup

Come InputAction, ora InputGroup ha invece una chiamata PlayInputGroup.Create rispetto alla necessità di compilare manualmente un struct.

Ciò significa che devi individuare tutte le chiamate al numero new InputGroup:

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

e sostituiscilo con una chiamata a PlayInputGroup.Create:

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

Aggiorna InputMap

InputMap utilizza anche PlayInputMap.Create anziché crearne una nuova .

Individua le chiamate al numero new InputMap:

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

e sostituiscilo con una chiamata a PlayInputMap.Create:

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

Rinomina i metodi PlayInputMappingClient

Per PlayInputMappingClient, RegisterInputMappingProvider è stato rinominato in SetInputMappingProvider.

Individua le chiamate al numero RegisterInputMappingProvider:

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

e sostituiscili con una chiamata a SetInputMappingProvider:

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

Anche UnregisterInputMappingProvider è stato rinominato ClearInputMappingProvider e non richiede più la registrazione precedente InputMappingProvider come parametro.

Individua le chiamate al numero UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

e sostituiscili con ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();