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:
- Führen Sie ein Upgrade auf das Eingabe-SDK
1.1.0-beta
durch. - Aktualisieren Sie alle Tastenbelegungen, um den Fehler nicht unterstützten Konfigurationen.
- Aktualisiere dein
InputMap
, damit die Funktion zur Neuzuordnung aktiviert ist.
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 istUmschalttaste + A gültig, aberA + B ,Strg + Alt undUmschalttaste + A + Tabulatortaste sind ungültig.Zwei oder mehr
InputAction
- oderInputGroup
-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
Das folgende Sequenzdiagramm zeigt, wie die setInputContext()
API bei folgenden Properties funktioniert:
Laufzeit:
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