Cuando se desarrollan juegos para Android para una amplia variedad de factores de forma, incluidos los dispositivos plegables, las tablets y las pantallas grandes, los jugadores suelen conectar controles o gamepads externos. En el caso de las pantallas de la IU diseñadas originalmente para interacciones táctiles o con el mouse, navegar por los menús con un control puede ser un desafío.
Si bien rediseñar la arquitectura de la IU en torno a la navegación estándar con el pad direccional suele brindar una mejor experiencia del usuario, es posible que no siempre sea factible para los proyectos existentes. Como opción alternativa, Unity Input System
proporciona el VirtualMouseInput componente. Este componente te permite controlar un cursor de software virtual en pantalla con un gamepad o control conectado.
Acerca de VirtualMouseInput
El componente VirtualMouseInput es una utilidad de alto nivel en el paquete Unity Input System que une las entradas del gamepad con el control del cursor en pantalla, las interacciones del puntero de la IU y los eventos simulados de la pantalla táctil. Cuando este modo está activo, hace lo siguiente:
- Crea un dispositivo de mouse virtual: Registra un mouse simulado por software en Unity Input System junto con cualquier dispositivo de puntero físico.
- Asigna controles del gamepad a acciones del cursor: Puedes vincular los sticks analógicos o los pads direccionales para mover el cursor por la pantalla y asignar botones del control (como el botón Sur / A) para simular clics izquierdo, derecho o central del mouse.
- Se integra con la IU de Unity: Al funcionar sin problemas con
InputSystemUIInputModule, los elementos estándar de la IU, como botones, interruptores y controles deslizantes, responden al cursor virtual exactamente como lo harían a un mouse de hardware o a una interacción táctil. - Controla un cursor visual: Te permite asignar un
Graphicde la IU (como un componenteImage) que rastrea y renderiza automáticamente la posición del cursor virtual en la pantalla.
Combina el mouse virtual con TouchSimulation
Si tu juego se diseñó originalmente solo para pantallas táctiles y se basa en APIs o secuencias de comandos táctiles directas, un mouse virtual no activará automáticamente la lógica de detección táctil existente, ya que se registra como un dispositivo de mouse en lugar de un dispositivo de pantalla táctil.
Para admitir la interacción del cursor controlado por el gamepad sin volver a escribir el código de control táctil
heredado, puedes usar la función de Unity Input System's
TouchSimulation junto con VirtualMouseInput:
- Cómo funciona: Cuando se habilita con
TouchSimulation.Enable(), Input System convierte automáticamente los clics y los movimientos del puntero de cualquier dispositivo de mouse activo, incluido el mouse simulado por software creado porVirtualMouseInput, en eventos simulados de la pantalla táctil. - Flujo de datos resultante: Las interacciones con el stick y los botones del gamepad controlan el mouse virtual, que
TouchSimulationluego traduce en eventos de un solo toque (Touchscreen). Las secuencias de comandos de detección táctil existentes pueden procesar estos eventos sin problemas sin modificar el código. - Consideraciones:
TouchSimulationse limita a la emulación de puntero de un solo toque. Si tu juego se basa en gestos multitáctiles complejos, como pellizcar para hacer zoom o rotación con dos dedos, debes configurar vinculaciones de acciones de entrada dedicadas para los controles del gamepad.
Para obtener detalles técnicos completos, propiedades y documentación de uso, consulta
las referencias oficiales de UnityEngine.InputSystem.UI.VirtualMouseInput
y UnityEngine.InputSystem.EnhancedTouch.TouchSimulation
las secuencias de comandos.