Migrieren Sie zum 1.0.0-beta Input SDK

In dieser Anleitung wird beschrieben, wie Sie Ihr Unity-Spiel auf das neueste Input SDK migrieren. Das 1.0.0-beta-SDK bietet erhebliche Verbesserungen gegenüber der vorherigen 0.0.4-Vorabversion. Sie sollten so schnell wie möglich von den früheren Vorabversionen migrieren. Das 0.0.4-SDK funktioniert noch bis März 2023.

Referenzen aktualisieren

Klassen haben das Präfix Play erhalten, 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 (fehlt eine „using“-Direktive oder ein Assembly-Verweis?)

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 ein neues 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 es durch einen Aufruf von PlayInputAction.Create:

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

Jede InputGroup aktualisieren

Wie bei InputAction ist für InputGroup jetzt ein PlayInputGroup.Create-Aufruf erforderlich, anstatt dass Sie manuell ein struct ausfüllen müssen.

Das bedeutet, dass Sie alle Aufrufe von new InputGroup suchen sollten:

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

Ersetzen Sie sie 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 nach Aufrufen von new InputMap:

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 alle 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. Der zuvor registrierte Parameter InputMappingProvider ist nicht mehr erforderlich.

Suchen Sie nach Aufrufen von UnregisterInputMappingProvider:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

Ersetzen Sie sie durch ClearInputMappingProvider:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();