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();