Este guia descreve como migrar seu jogo do Unity para usar o SDK de entrada mais recente. O SDK 1.0.0-beta tem melhorias significativas em relação à versão de prévia 0.0.4. Migre das prévias anteriores assim que possível. O SDK 0.0.4 vai continuar funcionando até março de 2023.
Atualizar referências
As classes receberam o prefixo Play
para evitar conflitos de nomenclatura com o Unity.
Quando você encontrar uma mensagem de erro semelhante a esta:
erro CS0246: não foi possível encontrar o tipo ou nome de namespace "InputMappingProvider" (você se esqueceu de adicionar uma diretiva de uso ou referência em Assembly?)
É necessário adicionar o prefixo Play
ao nome da classe. Por exemplo,
InputMappingProvider
passa a ser PlayInputMappingProvider
.
Atualizar cada InputAction
A InputAction
agora é construída por uma chamada de PlayInputAction.Create
em vez de
criar uma nova struct
com campos nomeados.
Localize todos os códigos que chamam new InputAction
:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
E substitua por chamadas para PlayInputAction.Create
:
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
Atualizar cada InputGroup
Assim como as InputAction
s, os InputGroup
s agora têm uma chamada para PlayInputGroup.Create
em vez de
exigirem que você preencha manualmente uma struct
.
Isso significa que você precisa localizar todas as chamadas para new InputGroup
:
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
E substituir por chamadas para PlayInputGroup.Create
:
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
Atualizar o InputMap
O InputMap
também usa PlayInputMap.Create
em vez de construir uma nova
struct.
Localize todas as chamadas para new InputMap
:
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
E substitua por chamadas para PlayInputMap.Create
:
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
Renomear os métodos PlayInputMappingClient
Para PlayInputMappingClient
, RegisterInputMappingProvider
foi renomeado como
SetInputMappingProvider
.
Localize todas as chamadas para RegisterInputMappingProvider
:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
E substitua por chamadas para SetInputMappingProvider
:
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
O UnregisterInputMappingProvider
também foi renomeado como
ClearInputMappingProvider
e não exige mais o InputMappingProvider
registrado
anteriormente como um parâmetro.
Localize todas as chamadas para UnregisterInputMappingProvider
:
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
E substitua por ClearInputMappingProvider
:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();