Lernen Sie das Input System mit aktualisierten Tutorials und unserem Beispielprojekt Warriors

KRISTYNA HOUGAARD / UNITY TECHNOLOGIESContributor
Nov 26, 2020|7 Min.
Lernen Sie das Input System mit aktualisierten Tutorials und unserem Beispielprojekt Warriors
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Mit dem Input Systemkönnen Sie schnell Steuerelemente für mehrere Plattformen einrichten, von Mobilgeräten bis VR. Beginnen Sie mit unseren Beispielprojekten und neuen Video-Tutorials für Anfänger und Fortgeschrittene.

Die Eingabe ist das Herzstück dessen, was Ihre Echtzeitprojekte interaktiv macht. Das Eingabesystem von Unity standardisiert die Art und Weise, wie Sie Steuerelemente implementieren, und bietet neue erweiterte Funktionen. Es ist für Unity 2019 LTS und neuere Versionen verifiziert (eine vollständige Liste der unterstützten Eingabegerätefinden Sie in der Dokumentation).

Unsere neuen Tutorial-Inhalte können Ihnen dabei helfen, schnell loszulegen, auch wenn Sie noch nie für mehrere Plattformen entwickelt haben. Wenn Sie mit den Arbeitsabläufen bereits vertraut sind, erfahren Sie mit Warriors, unserem wichtigsten Beispielprojekt, mehr darüber, wie Sie das Input System zum Steuern (anderer) Unity Tools wie Cinemachine oder Unity UI verwenden.

In dieser „Meet the Devs“-Sitzung vom März wird erklärt, warum wir dieses neue System erstellt haben. Außerdem ist eine Demo enthalten, in der die Arbeitsabläufe zum Einrichten des lokalen Mehrspielermodus, zum schnellen Hinzufügen von Gamepad-Steuerelementen, zum Erstellen neuer Spieler und zum Implementieren mobiler Steuerelemente beschrieben werden. Rene Damm, der leitende Entwickler des Input System, beantwortet auch Fragen des Publikums zu den Werkzeugen und der Roadmap des Teams.

Roll-a-Ball: Input System für Anfänger

Wenn Sie Anfänger sind und nur die grundlegenden Eingabe-Workflows für Unity kennenlernen möchten, sehen Sie sich das aktualisierte Roll-a-Ball-Projekt auf Unity Learnan. Es führt Sie durch die ersten Schritte wie die Installation des Input System Pakets, das Hinzufügen einer Player-Input-Komponenteund das Anwenden von Eingabedaten auf den Player.

Bild vom Roll-a-Ball-Projekt auf Unity Learn
Die Prototypenserie: Ein Raumschiff steuern
Bild aus der Prototypen-Serie: Ein Raumschiff steuern

Unsere Prototypenserie verwendet auch das Input System, wie Sie in diesem Video und Beispielprojekt zum Erstellen eines Bosses mit prozeduraler Animation sehen können. Das Input-Action-Asset des Raumschiffs verwendet Eingaben für Bewegungssteuerungen, das Abschießen von Laserprojektilen und das Boosten.

Krieger: Mittlere Integrationen und Gameplay-Szenarien

Warriors ist ein Projekt, das fortgeschrittenere Tools und APIs mit dem Input System in einem typischen plattformübergreifenden Third-Person-Spiel-Setup für lokalen Mehrspielermodus demonstriert. Es ist für Unity 2019 LTS verfügbar und wird für die 2020 LTS-Version aktualisiert, wenn diese nächstes Jahr veröffentlicht wird. Sie können das Projekt von GitHub herunterladen, wo drei Zweige zur Verfügung stehen:

  • V1 erfasst den Stand des Projekts zum Zeitpunkt der oben erwähnten „Meet the Devs“-Sitzung;
  • V2 haben wir für die letzte Input System Unite Now -Sitzung verwendet (siehe unten).
  • Wir setzen unsere Arbeit im Master -Zweig fort.

Das Projekt basiert auf Charakteren, die sowohl im Einzelspielermodus als auch im lokalen Multiplayer gesteuert werden können. Wenn der Game Manager auf „Lokaler Multiplayer“ eingestellt ist, werden mehrere Instanzen des Warrior-Prefabs erstellt. Da das Warrior-Prefab so eingerichtet ist, dass es die Player-Input-Komponente des Input-Systems verwendet, wird mit jeder Instanz des Warriors automatisch ein angeschlossenes Eingabegerät gekoppelt.

Kontrollschemata

Das Steuerungsschema für diesen Warrior ist auf plattformübergreifendes Spielen ausgelegt und wechselt automatisch zwischen der Tastatur und verschiedenen Gamepads. Dieses Setup bietet ein Beispiel für die Anwendung einer Glättung auf die Roheingabedaten zur Laufzeit, sodass die Richtungsbewegung des Charakters gleichmäßig ist, unabhängig davon, welche Achseneingabe (Tastaturtasten oder Gamepad-Joystick) der Spieler verwendet. Das folgende Steuerungsschema verwendet auch einen Tastendruck für eine grundlegende Angriffsanimation.

Bild aus Eingabeaktionen

Das Input-Action-Asset des Kriegers ist auch für zwei verschiedene Action-Maps eingerichtet: eine für die Steuerung des Charakters (Laufen und Angreifen) und die andere für die Steuerung der Eingabe für das Menü. Ein Spiel oder ein anderes interaktives Projekt hat normalerweise verschiedene Zustände mit unterschiedlichen Steuerungsanforderungen, die dieselben Eingabebindungen teilen.

Wenn Sie beispielsweise einen Joystick in eine Richtung drücken, läuft der Krieger in Richtung dieser Achse. Wenn das Spiel jedoch pausiert ist, kann der Spieler mit dem Joystick zwischen verschiedenen auswählbaren Schaltflächen und Optionen im Pausenmenü navigieren.

Mit dem Input System können Sie problemlos unterschiedliche Action Maps für verschiedene Steuerungsszenarien einrichten und diese zur Laufzeit mit einer einfachen API pro PlayerInput-Komponente umschalten:

playerInput.SwitchCurrentActionMap(stringForMapName);

Interaktion mit der Benutzeroberfläche

Nachdem Sie eine Aktionskarte für die Interaktion mit der Benutzeroberfläche eingerichtet haben, können Aktionen dem Benutzeroberflächen-Eingabemodul des Ereignissystems zugewiesen werden:

Titel

Im Warriors-Projekt kann jeder Spieler das Spiel pausieren und mit dem Pausenmenü interagieren. Die Overlay-Benutzeroberfläche besteht aus einigen Optionsschaltflächen und einem Kontextänderungsbereich auf der rechten Seite. Das UI-Eingabemodul des Input System wendet Aktionen an, die der Interaktion mit einer beliebigen Unity UI Komponente mit aktivierter Interactable (z. B. Schaltflächen und Schieberegler) zugewiesen sind.

Titel

Diese UI-Interaktion wird für den bestimmten Spieler isoliert, der die Pause-Taste gedrückt hat. Wenn beispielsweise Spieler 3 das Spiel pausiert, können Spieler 1 und 2 nicht damit interagieren und nur Spieler 3 behält die Kontrolle. Wenn Spieler 3 das Spiel fortsetzt, werden alle Spielersteuerungen wieder aufgenommen. Dies erreichen wir durch den Aufruf der folgenden Methoden einer PlayerInput-Komponente:

playerInput.ActivateInput();

playerInput.DeactivateInput();

Neubinden zur Laufzeit

Im UI-Menü gibt es ein Kontextfenster für Steuerelemente zur Laufzeitneubindung. Auf diese Weise können Sie eine interaktive Neubindung für eine bestimmte Eingabeaktion durchführen und eine neue Eingabebindung dafür festlegen. Wenn Sie beispielsweise einen PlayStation -Controller verwenden, können Sie die Angriffsaktion von der Kreuz-Taste auf eine andere Eingabetaste wie Dreieck oder R2 umbelegen.

Bilder einer pausierten Bewerbung

Diese Neubindung gilt als Überschreibung für eine bestimmte PlayerInput-Komponente. Beispielsweise kann Spieler 2 seine Angriffstaste einer anderen Taste zuweisen, dies hat jedoch keine Auswirkungen auf die Verwendung der Angriffseingabeaktion von Spieler 3.

Die API zum Einrichten einer interaktiven Neubindung enthält auch eine Operation für den Fall, dass die Neubindung abgeschlossen ist. Auf diese Weise können Sie Ihre eigene Steuerung einrichten, wenn Sie die Benutzeroberfläche aktualisieren, den Spielstatus speichern oder basierend auf diesem Ereignis ein anderes Gameplay-Element ändern.

private InputActionRebindingExtensions.RebindingOperation rebindOperation;

    void StartInteractiveRebind()
    {
        rebindOperation = inputAction.PerformInteractiveRebinding().OnComplete(operation => RebindCompleted());
        rebindOperation.Start();
    }

    void RebindCompleted()
    {
        rebindOperation.Dispose();

        //Apply UI Changes (IE: New Binding Icon)
    }
Input System und Cinemachine

Neben der Integration des Eingabesystems mit dem Ereignissystem und der Unity UI zeigt das Warriors-Projekt auch, wie es für die Zusammenarbeit mit Cinemachineeingerichtet werden kann. Ein typisches Kamera-Setup für ein Third-Person-Spiel würde eine umlaufende Folgekamera umfassen, bei der die Blickrichtung durch die Mausposition oder die Richtung des Joysticks bestimmt wird. Die Cinemachine Input Provider-Komponente kann zu einem Cinemachine Free Look-Kamera-Rig hinzugefügt werden, wodurch eine Eingabeaktion das Senden von Vector 2-Achsendaten direkt an die Achsensteuerungswerte von Cinemachine ermöglicht. Im Bild unten können Sie sehen, dass der CinemachineInputProvider die Eingabedaten aus der Look Input Action verwendet.

Bild des Beispielprojekts, Warriors
Die APIs des Input System : Daten über UI-Beispiel anzeigen

Das Input System enthält außerdem eine Vielzahl von APIs, sodass andere Systeme zur Laufzeit auf Daten zugreifen können, die in der Benutzeroberfläche oder anderen visuellen Elementen angezeigt werden können. Das Warriors-Beispielprojekt verwendet Daten aus der Spielereingabe, um Informationen wie das aktuelle Spielergerät oder die Spielereingabe-ID anzuzeigen oder sogar die UI-basierten Neubindungssteuerelemente der aktuellen Bindung zu aktualisieren. Wir haben ein benutzerdefiniertes System erstellt, das die Geräte- und Bindungszeichenfolgen übernimmt und ein bestimmtes Symbol zurückgibt.

Wenn der Spieler beispielsweise einen Xbox-Controller verwendet und die Angriffsaktion an die nördliche Kontexttaste gebunden ist, wird ein Y-Tastensymbol angezeigt. Wenn der Player jedoch eine Tastatur verwendet, wird eine Zeichenfolge für die aktuell gebundene Tastaturtaste angezeigt. Sie können dieses Device Display Configurator-Tool gerne extrahieren und in Ihren eigenen Projekten verwenden.

Beispielprojektbild
Beispiele und Dokumentation für Input System

Das Input System -Paket enthält außerdem mehrere zusätzliche Beispiele, die Sie im Paket-Manager erkunden können. Diese können Sie als Referenz nutzen und für Ihre eigenen Projekte erweitern oder anpassen. Dort finden Sie auch die offizielle Dokumentation, einschließlich dieser Kurzanleitung.

Demnächst: Input System 1.1

Input System 1.1 befindet sich derzeit in der Vorschau und bringt zahlreiche Korrekturen und einige Verbesserungen mit. Sie können Rebinds jetzt als JSON speichern und laden (siehe das Beispielskript RebindSaveLoad.cs) und Gerätelayouts können jetzt vorkompiliert werden, was die Instanziierungszeit und die Heap-Kosten der Garbage Collection (GC) für diese Geräte erheblich reduziert.

Suchen Sie nach mehr Inhalten? Lass es uns wissen!

Wir hoffen, dass Ihnen das Beispielprojekt und die anderen Lernmaterialien dabei helfen, mit dem Input System Ihre Ideen in die Tat umzusetzen. Bitte teilen Sie im Kommentarbereich unten mit, was Sie als Nächstes lernen möchten. Behalten Sie außerdem die Seite „Input System“ im Auge, auf der Sie weitere Tutorials und andere Ressourcen finden.