Migrar para o SDK de entrada 1.0.0-beta

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 InputActions, os InputGroups 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();