En esta guía, se describe cómo migrar tu juego de Unity para usar el SDK de entrada más reciente. El SDK 1.0.0-beta presenta mejoras importantes con respecto a la vista previa 0.0.4 anterior. Debes migrar de las vistas previas anteriores lo antes posible. El SDK 0.0.4 seguirá funcionando hasta marzo de 2023.
Actualiza las referencias
Las clases recibieron el prefijo Play
para evitar conflictos de nombres con Unity.
Cuando veas un mensaje de error similar a este:
error CS0246: No se pudo encontrar el tipo o el nombre del espacio de nombres "InputMappingProvider" (¿falta una directiva de uso o una referencia de Assembly?)
debes agregar el prefijo Play
al nombre de la clase. Por ejemplo, InputMappingProvider
se convierte en PlayInputMappingProvider
.
Actualiza cada InputAction
Ahora, InputAction
se construye con una llamada a PlayInputAction.Create
, en lugar de crear una struct
nueva con campos con nombre.
Ubica cualquier código que llame a new InputAction
:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
Y reemplázalo por una llamada a PlayInputAction.Create
:
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
Actualiza cada InputGroup
Al igual que InputAction
, InputGroup
ahora tiene una llamada a PlayInputGroup.Create
, en lugar de requerir que completes un struct
de forma manual.
Esto significa que debes ubicar todas las llamadas a new InputGroup
:
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
Y reemplazarlas por una llamada a PlayInputGroup.Create
:
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
Actualiza el InputMap
InputMap
también usa PlayInputMap.Create
en lugar de construir una estructura nueva.
Ubica las llamadas a new InputMap
:
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
Y reemplázalas por una llamada a PlayInputMap.Create
:
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
Cambia el nombre de los métodos de PlayInputMappingClient
En PlayInputMappingClient
, se cambió el nombre de RegisterInputMappingProvider
a SetInputMappingProvider
.
Por lo tanto, busca las llamadas a RegisterInputMappingProvider
:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
Y reemplázalas por una llamada a SetInputMappingProvider
:
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
También se cambió el nombre de UnregisterInputMappingProvider
por ClearInputMappingProvider
y ya no se requiere el InputMappingProvider
registrado anteriormente como parámetro.
Ubica las llamadas a UnregisterInputMappingProvider
:
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
Y reemplázalas por ClearInputMappingProvider
:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();