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

Z tego przewodnika dowiesz się, jak przeprowadzić migrację gry w Unity, aby używała najnowszego pakietu Input SDK. Pakiet SDK w wersji 1.0.0 w wersji beta ma istotne ulepszenia w porównaniu z poprzednią wersją przedpremierową 0.0.4. Zalecamy jak najszybsze przejście z poprzednich podglądów. Pakiet SDK 0.0.4 będzie działać do marca 2023 r.

Zaktualizuj odwołania

Klasy otrzymały prefiks Play, aby uniknąć konfliktów nazw z Unity. Zawsze, gdy wyświetla się komunikat o błędzie podobny do:

błąd CS0246: Nie można znaleźć nazwy typu lub przestrzeni nazw „InputMappingProvider” (brak dyrektywy używającej lub odniesienia do zestawu?)

musisz dodać do nazwy klasy prefiks Play. np. InputMappingProvider zmieni się na PlayInputMappingProvider.

Aktualizowanie każdego elementu wejściowego

Obiekt InputAction jest teraz tworzony z wywołaniem PlayInputAction.Create, a nie z nowym struct z polami nazwanymi.

Znajdź kod powodujący połączenie z numerem new InputAction:

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

I zastąp go połączeniem z numerem 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 ma teraz połączenie PlayInputGroup.Create i nie musisz ręcznie wypełniać pola struct.

Oznacza to, że musisz zlokalizować wszystkie połączenia z numerem new InputGroup:

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

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

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

Aktualizowanie mapy wejściowej

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

Zlokalizuj 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 połączeniem z numerem PlayInputMap.Create:

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

Zmiana nazw metod PlayInputMappingClient

Nazwa PlayInputMappingClient została zmieniona na RegisterInputMappingProvider na SetInputMappingProvider.

Zlokalizuj więc połączenia z numerem RegisterInputMappingProvider:

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

I zastąp 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ż zarejestrowanego parametru InputMappingProvider.

Zlokalizuj połączenia z numerem UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

Zamień je na ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();