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