Przejdź na pakiet SDK do wprowadzania danych w wersji 1.0.0 w wersji beta

Z tego przewodnika dowiesz się, jak przenieść grę na Unity, aby korzystała z najnowszej wersji Wejściowy pakiet SDK. Pakiet SDK 1.0.0-beta zawiera znaczące ulepszenia poprzedni podgląd 0.0.4. Należy jak najszybciej rozpocząć migrację z wcześniejszych podglądów jak to tylko możliwe. Pakiet SDK 0.0.4 będzie działać do końca marca 2023 r.

Zaktualizuj odniesienia

Klasy otrzymały prefiks Play, aby uniknąć kolizji nazewnictwa z Unity. Gdy zobaczysz komunikat o błędzie podobny do tego:

błąd CS0246: typ lub nazwa przestrzeni nazw „InputMappingProvider” nie można znaleziono (czy brakuje dyrektywy using lub odniesienia do zestawu?)

musisz dodać do nazwy klasy prefiks Play. Przykład: InputMappingProvider zmienia wartość na PlayInputMappingProvider.

Zaktualizuj każde działanie wejściowe

Obiekt InputAction został utworzony z wywołaniem funkcji PlayInputAction.Create, a nie do utworzenia nowego elementu struct z nazwanymi polami.

Znajdź kod, który wywołuje kod new InputAction:

var driveAction = new InputAction
{
    ActionLabel = "Drive",
    UniqueId = (int)InputEventIds.DRIVE,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
    }
};

I zastąp go wywołaniem PlayInputAction.Create:

var driveAction = PlayInputAction.Create(
    "Drive",
    (int)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        null
    )
);

Zaktualizuj każdą grupę wejściową

Podobnie jak InputAction, InputGroup bierze teraz pod uwagę PlayInputGroup.Create połączenie niż wymagało ręcznego wypełnienia formularza struct.

Oznacza to, że wszystkie połączenia z numerem new InputGroup powinny być widoczne:

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

I zastąp je połączeniem z numerem PlayInputGroup.Create:

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

Aktualizacja mapy wejściowej

InputMap też używa PlayInputMap.Create, zamiast tworzyć nowy struct.

Znajdź połączenia z numerem new InputMap:

return new InputMap
{
    InputGroups = new List<InputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    MouseSettings = new MouseSettings
    {
        AllowMouseSensitivityAdjustment = false,
        InvertMouseMovement = false
    }
};

I zastąp go wywołaniem PlayInputMap.Create:

return PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

Zmień nazwy metod PlayInputMappingClient

Nazwa RegisterInputMappingProvider dla aplikacji PlayInputMappingClient została zmieniona na SetInputMappingProvider

Zlokalizuj połączenia z numerem RegisterInputMappingProvider:

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

Możesz też zastąpić je połączeniem z numerem SetInputMappingProvider:

PlayInputMappingClient inputMappingClient =
    Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);

Nazwa „UnregisterInputMappingProvider” została również zmieniona na ClearInputMappingProvider i nie wymaga już wcześniejszej rejestracji InputMappingProvider jako parametr.

Znajdź połączenia z numerem UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

I zastąp je elementem ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();