Input SDK for Unity auf Version 1.1 aktualisieren

In diesem Leitfaden erfahren Sie, wie Sie für Unity ein Upgrade Ihres Spiels vom Input SDK 1.0 auf das Input SDK 1.1 durchführen. Hier klicken für Java und Kotlin.

Versionshinweise

Google Play Spiele auf dem PC unterstützt die Neuzuordnung von Tastatursteuerelementen für die Schlüsselbindungen, die Ihr Spiel mit dem Input SDK bereitstellt.

Nutzer greifen auf diese Funktion zu, indem sie Overlay durch Auswahl von Steuerelementen und dann auf die Aktion klicken, die neu zugeordnet werden soll.

Google Play Spiele auf dem PC ordnet jede vom Nutzer neu zugeordnete Eingabe der Standardeinstellung deines Spiels zu Eingabe. Auf diese Weise muss Ihr Spiel die Neuzuordnungen des Spielers nicht erkennen. Wenn müssen Sie den neuen Input für eine In-Game-Aktion kennen, z. B. die Anzeige des über die Tastatur steuern, können Sie optional einen Callback registrieren, werden benachrichtigt, wenn Ereignisse neu zugeordnet werden.

Google Play Spiele auf dem PC speichert die neu zugeordneten Einstellungen von Nutzern lokal, damit sie erhalten bleiben für alle Gaming-Sessions. Da diese Einstellungen lokal gespeichert sind, haben Auswirkungen auf die mobile Nutzung und werden bei der Deinstallation von Google Play Spiele auf dem PC gelöscht. Die Einstellungen werden nicht auf mehreren PC-Geräten übernommen.

Sie müssen das Input SDK nicht aktualisieren, um die Neuzuordnung von Schlüsseln in Die Neuzuordnung wird jedoch für Ihr Spiel deaktiviert, wenn ein eine nicht unterstützte Konfiguration erkannt wird.

Wenn Sie die Eingabe-Neuzuordnung oder die Neuzuordnungsfunktion steuern möchten für Ihr Spiel deaktiviert ist, gehen Sie so vor:

Wenn Sie die Neuzuordnungsfunktion für Ihr Spiel deaktivieren möchten, um die schreibgeschützte Version Ihrer Schlüsselbindungen anzuzeigen, gehen Sie so vor:

  • Führen Sie ein Upgrade auf das Eingabe-SDK 1.1.0-beta durch.
  • Aktualisieren Sie Ihre InputMap, um die Funktion zur Neuzuordnung deaktiviert zu lassen.

Sie können Ihre Version des Input SDK auf 1.1.0-beta aktualisieren, um erweiterte Neuzuordnungsfunktionen in Google Play Spiele auf dem PC nutzen, InputContexts, um Steuerelemente für verschiedene Szenen deines Spiels festzulegen, füge Callbacks zum Warten auf Neuzuordnungsereignisse definieren einen Satz reservierter Schlüssel, die der Nutzer kann die Funktion zur Neuzuordnung gemäß InputAction nicht neu zuordnen oder deaktivieren, InputGroup oder InputMap.

Beachten Sie beim Upgrade die folgenden Ausnahmen:

Nicht unterstützte Konfigurationen

Die Neuzuordnung von Eingaben ist deaktiviert, wenn die folgenden Bedingungen nicht erfüllt sind:

  • Ein InputAction mit mehreren Tasten muss aus einem Modifikator bestehen und der ohne Modifikatortaste. Zum Beispiel ist Umschalttaste + A gültig, aber A + B, Strg + Alt und Umschalttaste + A + Tabulatortaste sind ungültig.

  • Zwei oder mehr InputAction- oder InputGroup-Objekte können nicht dasselbe sein eindeutige ID.

Jetzt neu: InputContext

Ein InputContext ermöglicht es einem Spiel, denselben Schlüssel für verschiedene Aktionen in ohne Konflikte. Wenn ein Spiel zum Springen Platz braucht, während des Spiels und zur Bestätigung der Menüauswahl Ordnen Sie den Bereich einzeln neu zu, um ihn in Menüs und Leertaste zum Aufwärtspfeil.

Das folgende Sequenzdiagramm zeigt, wie die setInputContext() API bei folgenden Properties funktioniert: Laufzeit:

Diagramm, das den Ablauf des Input SDK bei der Neuzuordnung von Schlüsseln zeigt.

Upgrade

Spiele, in denen frühere Implementierungen des Input SDK verwendet werden, werden weiterhin unterstützt eine einfache Neuzuordnung zu erstellen, es sei denn, sie verwenden nicht unterstützte Konfiguration. Wenn Sie in Ihrem Spiel eine ältere Version des Input SDK, finden Sie in der Upgradeleitfaden von 0.0.4 auf 1.0.0 Beta

Das Upgrade auf 1.1.0-Beta ermöglicht neue Funktionen, darunter:

  • Kontextänderungen auslösen
  • Benachrichtigungen zu Schlüsselzuordnungsereignissen erhalten
  • Die Neuzuordnung pro Aktion, Gruppe, Kontext oder Karte wird deaktiviert.

Installation

Das Unity-Plug-in v1.1.0-beta steht Ihnen jetzt zur Verfügung. Sie müssen alle frühere Versionen des Input SDKs in Ihrem Spiel und ein Upgrade auf die aktuelle Version.

Informationen zum Hinzufügen des Input SDK v1.1.0-beta zu deinem Spiel findest du unter SDK hinzufügen

Statische Felder definieren

Für Version 1.1.0-beta empfiehlt es sich, die InputActions zu definieren, InputGroups, InputContexts und InputMap als statische Felder Ihres InputMappingProvider, da diese Felder auch über andere Teile Ihrer App:

#if PLAY_GAMES_PC
using Java.Lang;
using Java.Util;
using Google.Android.Libraries.Play.Games.Inputmapping;
using Google.Android.Libraries.Play.Games.Inputmapping.Datamodel;

public class InputSDKMappingProvider : InputMappingProviderCallbackHelper
{
    public static readonly string INPUT_MAP_VERSION = "1.0.0";

    private static readonly InputAction driveInputAction =
            InputAction.Create(...);
    private static readonly InputGroup roadInputGroup = InputGroup.Create(...);
    public static readonly InputContext roadControlsContext =
            InputContext.Create(...);
    public static readonly InputMap inputMap = InputMap.Create(...);

    public override InputMap OnProvideInputMap()
    {
        return inputMap;
    }
}
#endif

InputActions aktualisieren

Die Methode InputAction.create() des Input SDK 1.0.0-beta ist eingestellt. Ein InputAction hat eine Versions-ID und kann gekennzeichnet werden als anpassbar ist oder nicht. Ein InputAction, das mit dem Input SDK definiert wird Die Methode 1.0.0-beta create() ist standardmäßig anpassbar und hat keine Versionsverwaltung Informationen:

InputAction in Input SDK 1.0.0 (Beta)

var driveAction = PlayInputAction.Create(
    "Drive",
    (long)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        new List<PlayMouseAction>()
    )
);

InputAction in Input SDK 1.1.0 (Beta)

private static readonly InputAction driveInputAction = InputAction.Create(
    "Drive",
    (long)InputEventIds.DRIVE,
    InputControls.Create(
        new[] { new Integer(AndroidKeyCode.KEYCODE_SPACE) }.ToJavaList(),
        new ArrayList<Integer>()),
    InputEnums.REMAP_OPTION_ENABLED
);

InputAction in Input SDK 1.1.0-beta (mit Versionsstring)

private static readonly InputAction driveInputAction = InputAction.Create(
    "Drive",
    InputControls.Create(
        new[] { new Integer(AndroidKeyCode.KEYCODE_SPACE) }.ToJavaList(),
        new ArrayList<Integer>()),
    InputIdentifier.Create(
        INPUT_MAP_VERSION, (long)InputEventIds.DRIVE),
    InputEnums.REMAP_OPTION_ENABLED
);

Weitere Informationen zur Versionsverwaltung Ihrer Schlüsselbindungen finden Sie unter Tracking-Schlüssel-IDs:

InputGroups aktualisieren

Im Input SDK 1.1.0-beta musst du jedes einzelne InputGroup. Jede InputAction gehört zu einer InputGroup – einer Sammlung von Aktionen. Dadurch werden die Navigation und die Sichtbarkeit der Steuerelemente verbessert. während des Spiels. Genau wie ein InputAction eine eindeutige Kennung haben muss, unter allen Aktionen in einer einzelnen InputContext muss eine InputGroup eindeutigen ID für alle bestehenden Gruppen.

In den Beispielen in diesem Abschnitt hat ein Spiel zwei InputContext-Objekte für das Hauptmenü und das Gameplay. Es werden jeweils geeignete IDs erfasst. InputGroup in diesen Kontexten unter Verwendung der folgenden Aufzählung:

public enum InputGroupsIds
{
    // Main menu scene
    BASIC_NAVIGATION, // WASD, Enter, Backspace
    MENU_ACTIONS, // C: chat, Space: quick game, S: store
    // Gameplay scene
    BASIC_MOVEMENT, // WASD, space: jump, Shift: run
    MOUSE_ACTIONS, // Left click: shoot, Right click: aim
    EMOJIS, // Emojis with keys 1,2,3,4 and 5
    GAME_ACTIONS, // M: map, P: pause, R: reload
}

Wie InputAction, die InputGroup.create()-Methode des Input SDK 1.0.0-beta wurde verworfen. Du musst deine InputGroup in deinem Spiel aktualisieren durch eine Versionskennung und einen booleschen Wert, der angibt, InputAction Objekte in Ihren Gruppen anpassbar sind. Gruppen, die mit der eingestellten Methode 1.0.0-beta create() des Eingabe-SDK erstellt wurden, sind anpassbar und haben die ID „0“. und die Versions-ID ein leerer String ist (""):

InputGroup in Input SDK 1.0.0 (Beta)

var gameInputGroup = PlayInputGroup.Create(
    "Road controls",
    new List<PlayInputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openPgsAction,
        openStoreAction
    }
);

InputGroup in Input SDK 1.1.0 (Beta)

private static readonly InputGroup roadInputGroup = InputGroup.Create(
    "Road controls",
    new[]
    {
        driveInputAction,
        turboInputAction,
        openGarageInputAction,
        openPgsInputAction,
        openStoreInputAction,
    }.ToJavaList(),
    (long)InputGroupsIds.ROAD_CONTROLS,
    // All input actions of this group will be remappable unless specified
    // the contrary by the individual input actions.
    InputEnums.REMAP_OPTION_ENABLED
);

InputGroup im Input SDK 1.1.0-beta (mit Versionsstring)

private static readonly InputGroup roadInputGroup = InputGroup.Create(
    "Road controls",
    new[]
    {
        driveInputAction,
        turboInputAction,
        openGarageInputAction,
        openPgsInputAction,
        openStoreInputAction,
    }.ToJavaList(),
    InputIdentifier.Create(
        INPUT_MAP_VERSION, (long)InputGroupsIds.ROAD_CONTROLS),
    // All input actions of this group will be remappable unless specified
    // the contrary by the individual input actions.
    InputEnums.REMAP_OPTION_ENABLED
);

Weitere Informationen zur Versionsverwaltung Ihrer Schlüsselbindungen finden Sie unter Tracking-Schlüssel-IDs:

InputMap aktualisieren

Die Methode InputMap.create() des Input SDK „1.0.0-beta“ wurde eingestellt. InputMap aktualisieren, um eine Versions-ID zuzuweisen, deaktivieren aus der Neuzuordnungsfunktion entfernen oder eine Liste reservierter Tasten für Ihr das der Nutzer nicht für Neuzuordnungen verwenden soll. Jeden InputMap die mit der Eingabe SDK-1.0.0-beta create()-Methode definiert ist, ist standardmäßig mit der ID 0 gekennzeichnet, enthält keine reservierten Schlüssel.

InputMap in Input SDK 1.0.0 (Beta)

var gameInputMap = PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

InputMap in Input SDK 1.1.0 (Beta)


public static readonly string INPUT_MAP_VERSION = "1.0.0";
public static readonly long INPUT_MAP_ID = 0;

public static readonly InputMap inputMap = InputMap.Create(
    new[] { roadInputGroup, menuInputGroup }.ToJavaList(),
    MouseSettings.Create(false, false),
    InputIdentifier.Create(INPUT_MAP_VERSION, INPUT_MAP_ID),
    // Use ESC as reserved key
    InputEnums.REMAP_OPTION_ENABLED,
    new[]
    {
        InputControls.Create(new[]
        {
            new Integer(AndroidKeyCode.KEYCODE_ESCAPE)
        }.ToJavaList(),
        new ArrayList<Integer>())
    }.ToJavaList()
);

Nächste Schritte

Setzen Sie das Upgrade auf 1.1.0-Beta fort, Verschiedene Steuerelemente für verschiedene Szenen zuweisen mit InputContexts oder aktualisiere die Benutzeroberfläche deines Spiels, indem du Benachrichtigungen zur Neuzuordnung von Ereignissen mit InputRemappingListeners

Sehen Sie sich beim Aktualisieren Ihrer Schlüsselbindungen die Best Practices für das Entwerfen von Schlüsselbindungen Beachten Sie dabei die Einschränkungen. Einschränkungen der Funktion zur Neuzuordnung