Podczas tworzenia gier na Androida na różne urządzenia, w tym składane, tablety i duże ekrany, gracze często podłączają zewnętrzne kontrolery lub pady. W przypadku ekranów interfejsu zaprojektowanych pierwotnie do obsługi dotykowej lub myszą nawigowanie po menu za pomocą kontrolera może być trudne.
Przeprojektowanie architektury interfejsu pod kątem standardowej nawigacji za pomocą pada kierunkowego zwykle zapewnia lepsze wrażenia użytkownika, ale w przypadku istniejących projektów może nie być możliwe. Alternatywnie możesz użyć komponentu VirtualMouseInput w systemie Input System w Unity. Ten komponent umożliwia sterowanie wirtualnym kursorem oprogramowania na ekranie za pomocą podłączonego pada lub kontrolera.
Informacje o komponencie VirtualMouseInput
Komponent VirtualMouseInput to narzędzie wysokiego poziomu w pakiecie Input System w Unity, które łączy dane wejściowe z pada z sterowaniem kursorem na ekranie, interakcjami wskaźnika interfejsu i symulowanymi zdarzeniami ekranu dotykowego. Gdy jest aktywny:
- Tworzy wirtualne urządzenie myszy: rejestruje mysz symulowaną przez oprogramowanie w systemie Input System w Unity wraz z fizycznymi urządzeniami wskazującymi.
- Mapuje elementy sterujące pada na działania kursora: możesz powiązać drążki analogowe lub pady kierunkowe z przesuwaniem kursora po ekranie oraz mapować przyciski kontrolera (np. przycisk południowy / A) na symulowanie kliknięć lewym, prawym lub środkowym przyciskiem myszy.
- Integruje się z interfejsem Unity: dzięki bezproblemowej współpracy z modułem
InputSystemUIInputModulestandardowe elementy interfejsu, takie jak przyciski, przełączniki i suwaki, reagują na wirtualny kursor dokładnie tak samo jak na mysz sprzętową lub interakcję dotykową. - Steruje kursorem wizualnym: umożliwia przypisanie elementu
Graphicinterfejsu (np. komponentuImage), który automatycznie śledzi i renderuje położenie wirtualnego kursora na ekranie.
Łączenie wirtualnej myszy z symulacją dotyku
Jeśli gra została pierwotnie zaprojektowana wyłącznie pod kątem ekranów dotykowych i korzysta ze skryptów lub interfejsów API bezpośredniego dotyku, wirtualna mysz nie będzie automatycznie wywoływać istniejącej logiki wykrywania dotyku, ponieważ jest rejestrowana jako urządzenie myszy, a nie jako ekran dotykowy.
Aby obsługiwać interakcje kursora za pomocą pada bez konieczności przepisywania starszego kodu obsługi dotyku, możesz użyć funkcji TouchSimulation w systemie Input System w Unity wraz z komponentem VirtualMouseInput:
- Jak to działa: gdy funkcja jest włączona za pomocą
TouchSimulation.Enable(), system Input System automatycznie przekształca kliknięcia i ruchy wskaźnika z dowolnego aktywnego urządzenia myszy – w tym myszy symulowanej przez oprogramowanie utworzonej przez komponentVirtualMouseInput– w symulowane zdarzenia ekranu dotykowego. - Wynikowy przepływ danych: interakcje z drążkiem i przyciskami pada sterują wirtualną myszą, która jest następnie przekształcana przez funkcję
TouchSimulationw zdarzenia pojedynczego dotyku (Touchscreen). Istniejące skrypty wykrywania dotyku mogą bezproblemowo przetwarzać te zdarzenia bez modyfikacji kodu. - Ważne informacje: funkcja
TouchSimulationjest ograniczona do emulacji wskaźnika pojedynczego dotyku. Jeśli rozgrywka opiera się na złożonych gestach wielodotykowych, takich jak uszczypnięcie w celu powiększenia lub obrót dwoma palcami, musisz skonfigurować specjalne powiązania działań wejściowych dla elementów sterujących pada.
Szczegółowe informacje techniczne, właściwości i dokumentację dotyczącą użycia znajdziesz w
oficjalnych UnityEngine.InputSystem.UI.VirtualMouseInput
i UnityEngine.InputSystem.EnhancedTouch.TouchSimulation
dokumentach referencyjnych skryptów.