Virtuelle Maus mit einem Controller in Unity steuern

Bei der Entwicklung von Android-Spielen für eine Vielzahl von Formfaktoren, darunter faltbare Geräte, Tablets und große Displays, schließen Spieler häufig externe Controller oder Gamepads an. Bei Benutzeroberflächen, die ursprünglich für Touch- oder Mausinteraktionen entwickelt wurden, kann die Navigation in Menüs mit einem Controller schwierig sein.

Eine Neugestaltung der Benutzeroberflächenarchitektur mit Standard-Steuerkreuz-Navigation bietet in der Regel eine bessere Nutzererfahrung, ist aber für bestehende Projekte möglicherweise nicht immer umsetzbar. Als Alternative bietet das Unity Input System die VirtualMouseInput Komponente. Mit dieser Komponente können Sie einen virtuellen Softwarecursor auf dem Bildschirm mit einem angeschlossenen Gamepad oder Controller steuern.

Informationen zu VirtualMouseInput

Die Komponente VirtualMouseInput ist ein Utility auf hoher Ebene im Unity Input System-Paket, das Gamepad-Eingaben mit der Cursorsteuerung auf dem Bildschirm, UI-Pointer-Interaktionen und simulierten Touchscreen-Ereignissen verbindet. Wenn sie aktiv ist, geschieht Folgendes:

  • Virtuelles Mausgerät erstellen:Es wird eine softwarebasierte Maus im Unity Input System registriert, zusammen mit allen physischen Zeigegeräten.
  • Gamepad-Steuerung Cursoraktionen zuordnen:Sie können Analogsticks oder D-Pads binden, um den Cursor über den Bildschirm zu bewegen, und Controller-Buttons (z. B. Button South / A) zuordnen, um linke, rechte oder mittlere Mausklicks zu simulieren.
  • In Unity UI integrieren:Durch die nahtlose Zusammenarbeit mit InputSystemUIInputModule reagieren Standard-UI-Elemente wie Buttons, Umschalter und Schieberegler auf den virtuellen Cursor genau so wie auf eine Hardwaremaus oder Touch-Interaktion.
  • Visuellen Cursor steuern:Sie können ein UI-Graphic (z. B. eine Image-Komponente) zuweisen, das die Position des virtuellen Cursors auf dem Bildschirm automatisch verfolgt und rendert.

Virtuelle Maus mit TouchSimulation kombinieren

Wenn Ihr Spiel ursprünglich ausschließlich für Touchscreens entwickelt wurde und auf direkten Touch-Skripts oder APIs basiert, löst eine virtuelle Maus Ihre vorhandene Touch-Erkennungslogik nicht automatisch aus, da sie als Mausgerät und nicht als Touchscreen-Gerät registriert wird.

Wenn Sie die Cursorinteraktion per Gamepad unterstützen möchten, ohne den vorhandenen Code für die Touch Verarbeitung neu schreiben zu müssen, können Sie die Funktion TouchSimulation des Unity Input System zusammen mit VirtualMouseInput verwenden:

  • Funktionsweise:Wenn die Funktion mit TouchSimulation.Enable() aktiviert ist, konvertiert das Input System automatisch Klicks und Zeigerbewegungen von jedem aktiven Mausgerät, einschließlich der softwarebasierten Maus, die von VirtualMouseInput erstellt wurde, in simulierte Touchscreen-Ereignisse.
  • Resultierender Datenfluss:Ihre Gamepad-Stick- und Button-Interaktionen steuern die virtuelle Maus, die von TouchSimulation dann in Single-Touch-Ereignisse (Touchscreen) übersetzt wird. Ihre vorhandenen Skripts zur Touch-Erkennung können diese Ereignisse nahtlos ohne Codeänderung verarbeiten.
  • Hinweise:TouchSimulation ist auf die Emulation von Single-Touch-Zeigern beschränkt. Wenn Ihr Gameplay auf komplexen Multi-Touch-Gesten wie Pinch-to-Zoom oder Zwei-Finger-Rotation basiert, müssen Sie spezielle Eingabeaktionsbindungen für Ihre Gamepad-Steuerung konfigurieren.

Vollständige technische Details, Eigenschaften und eine Dokumentation zur Verwendung finden Sie in den offiziellen UnityEngine.InputSystem.UI.VirtualMouseInput und UnityEngine.InputSystem.EnhancedTouch.TouchSimulation Skriptreferenzen.