Esegui la migrazione all'SDK di immissione 1.0.0-beta

Questa guida descrive come eseguire la migrazione del tuo gioco Unity in modo che utilizzi l'SDK Input più recente. L'SDK 1.0.0-beta presenta miglioramenti sostanziali rispetto alla precedente anteprima 0.0.4. Ti consigliamo di eseguire la migrazione dalle anteprime precedenti il prima possibile. L'SDK 0.0.4 continuerà a funzionare fino a marzo 2023.

Aggiornare i 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: Impossibile trovare il nome del tipo o dello spazio dei nomi "InputMappingProvider" (manchi un'istruzione utilizzando o un riferimento di assembly?)

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

Aggiorna ogni InputAction

Ora InputAction viene creato con una chiamata a PlayInputAction.Create anziché con la creazione di un nuovo struct con campi denominati.

Individua qualsiasi codice che chiama 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 un PlayInputGroup.Create anziché richiedere di compilare manualmente un struct.

Ciò significa che devi individuare eventuali chiamate a new InputGroup:

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

Sostituiscila con una chiamata a PlayInputGroup.Create:

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

Aggiornare InputMap

InputMap utilizza anche PlayInputMap.Create anziché creare una nuova struct.

Individua le chiamate a 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)
);

Rinominare i metodi PlayInputMappingClient

Per PlayInputMappingClient, RegisterInputMappingProvider è stato rinominato SetInputMappingProvider.

Per trovare 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);

Inoltre, UnregisterInputMappingProvider è stato rinominato in ClearInputMappingProvider e non richiede più il parametro InputMappingProvider registrato in precedenza.

Individua eventuali chiamate al numero UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

e sostituiscile con ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();