Migrieren Sie zum 1.0.0-beta Input SDK

In diesem Leitfaden wird beschrieben, wie Sie Ihr Unity-Spiel migrieren, damit es das neueste Input SDK verwendet. Das 1.0.0-beta-SDK bietet erhebliche Verbesserungen gegenüber der vorherigen 0.0.4-Vorschau. 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 Namespacename „InputMappingProvider“ konnte nicht gefunden werden. Fehlt eine „using“-Direktive oder ein Assemblyverweis?

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 gibt es jetzt auch für InputGroup einen PlayInputGroup.Create-Aufruf, sodass Sie nicht mehr 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();