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