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

Z tego przewodnika dowiesz się, jak przenieść swoją grę w Unity, aby używała najnowszego pakietu Input SDK. Pakiet SDK w wersji 1.0.0-beta zawiera istotne ulepszenia w porównaniu z poprzednią wersją 0.0.4. Zalecamy jak najszybsze przejście z wcześniejszych podglądów. Pakiet SDK 0.0.4 będzie działać do marca 2023 r.

Aktualizowanie odwołań

Klasy otrzymały prefiks Play, aby uniknąć konfliktów nazw z Unity. Gdy zobaczysz komunikat o błędzie podobny do:

błąd CS0246: nie można znaleźć nazwy typu lub przestrzeni nazw „InputMappingProvider” (czy brakuje dyrektywy using lub odwołania do zestawu?).

musisz dodać do nazwy zajęć prefiks Play. Na przykład: InputMappingProvider zmieni się na PlayInputMappingProvider.

Aktualizuj każde działanie wejściowe

Pole InputAction jest teraz tworzone za pomocą wywołania funkcji PlayInputAction.Create, a nie przez tworzenie nowego pola struct z nazwami pól.

Znajdź kod wywołujący new InputAction:

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

Zastąp go wywołaniem funkcji PlayInputAction.Create:

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

Aktualizowanie każdego elementu InputGroup

Podobnie jak w przypadku InputAction, InputGroup ma teraz wywołanie PlayInputGroup.Create, zamiast wymagać ręcznego wypełniania formularza struct.

Oznacza to, że należy zlokalizować wszystkie połączenia do new InputGroup:

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

Zastąp go połączeniem do: PlayInputGroup.Create:

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

Aktualizowanie mapy danych wejściowych

Funkcja InputMap używa też PlayInputMap.Create zamiast tworzyć nową strukturę.

Znajdź połączenia na numer new InputMap:

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

Zastąp go wywołaniem funkcji PlayInputMap.Create:

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

Zmiana nazwy metod PlayInputMappingClient

Nazwa elementu PlayInputMappingClient, RegisterInputMappingProvider została zmieniona na SetInputMappingProvider.

Aby znaleźć połączenia na numer RegisterInputMappingProvider:

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

i zastąpić je wywołaniem funkcji SetInputMappingProvider:

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

Nazwa parametru UnregisterInputMappingProvider została zmieniona na ClearInputMappingProvider i nie wymaga już wcześniej zarejestrowanego parametru InputMappingProvider.

Znajdź połączenia na numer UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

I zastąp je elementami ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();