In diesem Leitfaden wird beschrieben, wie Sie Ihr Unity-Spiel auf das neueste Input SDK umstellen. Das 1.0.0-beta SDK bietet erhebliche Verbesserungen gegenüber der vorherigen 0.0.4-Vorabversion. Sie sollten so bald wie möglich von den früheren Vorabversionen migrieren. Das SDK 0.0.4 funktioniert noch bis März 2023.
Referenzen aktualisieren
Klassen erhalten das Präfix Play
, um Namenskonflikte mit Unity zu vermeiden.
Wenn Sie eine Fehlermeldung wie die folgende sehen:
Fehler CS0246: Der Typ- oder Namespace-Name "InputMappingProvider" konnte nicht gefunden werden. Fehlen eine Verwendungsanweisung oder eine Assembly-Referenz?
Sie müssen dem Klassennamen das Präfix Play
hinzufügen. Aus InputMappingProvider
wird beispielsweise PlayInputMappingProvider
.
Jede InputAction aktualisieren
InputAction
wird jetzt mit einem Aufruf von PlayInputAction.Create
erstellt, anstatt eine neue struct
mit benannten Feldern zu erstellen.
Suchen Sie nach Code, der new InputAction
aufruft:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
Ersetzen Sie ihn durch einen Aufruf von PlayInputAction.Create
:
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
Jede InputGroup aktualisieren
Ähnlich wie bei InputAction
gibt es jetzt für InputGroup
einen PlayInputGroup.Create
-Aufruf, anstatt dass Sie manuell ein struct
ausfüllen müssen.
Sie sollten also alle Aufrufe von new InputGroup
finden:
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
Ersetzen Sie es durch einen Aufruf von PlayInputGroup.Create
:
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
InputMap aktualisieren
InputMap
verwendet ebenfalls PlayInputMap.Create
, anstatt eine neue Struktur zu erstellen.
Suchen Sie alle new InputMap
-Aufrufe:
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
Ersetzen Sie es durch einen Aufruf von PlayInputMap.Create
:
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
PlayInputMappingClient-Methoden umbenennen
Für PlayInputMappingClient
wurde RegisterInputMappingProvider
in SetInputMappingProvider
umbenannt.
So finden Sie Anrufe an RegisterInputMappingProvider
:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
Ersetzen Sie sie durch einen Aufruf von SetInputMappingProvider
:
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
UnregisterInputMappingProvider
wurde in ClearInputMappingProvider
umbenannt und erfordert nicht mehr den zuvor registrierten Parameter InputMappingProvider
.
Anrufe an UnregisterInputMappingProvider
finden:
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
Ersetzen Sie sie durch ClearInputMappingProvider
:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();