Aprenda el Input System con tutoriales actualizados y nuestro proyecto de muestra, Warriors

Con el Input System, puedes configurar rápidamente controles para múltiples plataformas, desde dispositivos móviles hasta VR. Comience con nuestros proyectos de ejemplo y nuevos tutoriales en vídeo para principiantes y usuarios intermedios.
La entrada es la base de lo que hace que sus proyectos en tiempo real sean interactivos. El sistema de entrada de Unity estandariza la forma de implementar controles y proporciona nuevas funcionalidades avanzadas. Está verificado para Unity 2019 LTS y versiones más nuevas (consulte la documentación para obtener una lista completa de dispositivos de entrada compatibles).
Nuestro nuevo contenido tutorial puede ayudarte a comenzar rápidamente, incluso si eres completamente nuevo en el desarrollo para múltiples plataformas. Si ya está familiarizado con los flujos de trabajo, obtenga más información sobre cómo usar el Input System para impulsar (otras) herramientas de Unity como Cinemachine o Unity UI con Warriors, nuestro principal proyecto de ejemplo.
Esta sesión Meet the Devs de marzo explica por qué creamos este nuevo sistema e incluye una demostración que describe los flujos de trabajo para configurar el modo multijugador local, agregar rápidamente controles de gamepad, generar nuevos jugadores e implementar controles móviles. René Damm, el desarrollador principal del Input System, también responde preguntas de la audiencia sobre las herramientas y la hoja de ruta del equipo.
Si eres un principiante que solo quiere conocer los flujos de trabajo de entrada básicos para Unity, consulta el proyecto Roll-a-Ball actualizado en Unity Learn. Lo guía a través de los primeros pasos, como instalar el paquete del Input System, agregar un componente de entrada del reproductory aplicar datos de entrada al reproductor.


Nuestra serie de prototipos también utiliza el Input System, como puedes ver en este video y proyecto de ejemplo sobre la creación de un jefe con animación procedimental. El recurso de acción de entrada de la nave espacial utiliza la entrada para controles de movimiento, disparo de proyectiles láser y impulso.
Warriors es un proyecto que demuestra herramientas y API más intermedias con el Input System en una configuración típica de juego multiplataforma multijugador local en tercera persona. Está disponible para Unity 2019 LTS y se actualizará para la versión 2020 LTS cuando se lance el próximo año. Puedes descargar el proyecto desde GitHub, donde tenemos tres ramas disponibles:
El proyecto está construido alrededor de personajes que se pueden controlar tanto en el modo de un jugador como en el modo Multiplayer local. Cuando el Administrador de juegos está configurado en Multiplayer local, creará varias instancias del prefabricado Guerrero. Como el prefabricado Guerrero está configurado para usar el componente de Entrada de jugador del Sistema de entrada, cada instancia del Guerrero tendrá automáticamente un dispositivo de entrada conectado.
El esquema de control de este Warrior está configurado para juego multiplataforma y cambia automáticamente entre el teclado y diferentes gamepads. Esta configuración proporciona un ejemplo de cómo aplicar suavizado a los datos de entrada de tiempo de ejecución sin procesar para que el movimiento direccional del personaje sea uniforme sin importar qué ejes de entrada (teclas del teclado o joystick del gamepad) use el jugador. El siguiente esquema de control también utiliza presionar un botón para una animación de ataque básica.

El recurso de acción de entrada del guerrero también está configurado para dos mapas de acción diferentes: uno para controlar el personaje (correr y atacar) y el otro para controlar la entrada al menú. Un juego o cualquier otro proyecto interactivo normalmente tiene diferentes estados con distintos requisitos de control que comparten los mismos enlaces de entrada.
Por ejemplo, empujar un joystick en una dirección hará que el Guerrero corra hacia ese eje. Sin embargo, cuando el juego está en pausa, el jugador puede usar el joystick para navegar entre diferentes botones y opciones seleccionables en el menú de pausa.
Al utilizar el Input System, puede configurar fácilmente diferentes mapas de acción para varios escenarios de esquemas de control y cambiarlos, por componente PlayerInput, en tiempo de ejecución con una API simple:
playerInput.SwitchCurrentActionMap(stringForMapName);
Una vez que haya configurado un Mapa de acciones para interactuar con la IU, las acciones se pueden asignar al Módulo de entrada de IU del Sistema de eventos:

En el proyecto Warriors, cada jugador puede pausar el juego e interactuar con el menú de pausa. La interfaz de usuario superpuesta consta de algunos botones de opción y un panel de cambio de contexto a la derecha. El módulo de entrada de la interfaz de usuario del Input System aplica acciones asignadas a la interacción con cualquier componente de la Unity UI con Interactable habilitado (como botones y controles deslizantes).

Esta interacción de UI estará aislada para el jugador específico que presionó pausa. Por ejemplo, si el Jugador 3 pausa el juego, entonces los Jugadores 1 y 2 no podrán interactuar con él y solo el Jugador 3 tendrá el control. Cuando el Jugador 3 reanuda el juego, se reanudan todos los controles del Jugador. Hacemos esto llamando a los siguientes métodos en un componente PlayerInput:
playerInput.ActivateInput();
playerInput.DeactivateInput();
En el menú de interfaz de usuario, hay un panel de contexto para volver a vincular controles en tiempo de ejecución. Esto le permite realizar un revinculación interactiva para una acción de entrada específica y establecer una nueva vinculación de entrada para ella. Por ejemplo, al usar un controlador de PlayStation, puedes volver a vincular la acción de Ataque del botón Cruz a otro botón de entrada como Triángulo o R2.

Esta revinculación se aplica como una anulación a un componente PlayerInput específico. Por ejemplo, el Jugador 2 podrá volver a asignar su botón de Ataque a un botón diferente, pero esto no afectará el uso de la Acción de Entrada de Ataque por parte del Jugador 3.
La API para configurar un revinculación interactiva también contiene una operación para cuando la revinculación se ha completado. Esto te permite configurar tu propio control al actualizar la interfaz de usuario, guardar el estado del juego o cambiar cualquier otro elemento del juego en función de este evento.
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)
}
Además de la integración del sistema de entrada con el sistema de eventos y la Unity UI, el proyecto Warriors también demuestra cómo se puede configurar para que funcione en conjunto con Cinemachine. Una configuración de cámara típica para un juego en tercera persona incluiría una cámara de seguimiento en órbita donde la dirección de la vista se establece mediante la posición del mouse o la dirección de empuje del joystick. El componente Proveedor de entrada de Cinemachine se puede agregar a un equipo de cámara Cinemachine Free Look, lo que permite que una acción de entrada envíe datos del eje Vector 2 directamente a los valores de control de ejes de Cinemachine. En la imagen a continuación, puede ver que CinemachineInputProvider está utilizando los datos de entrada de la acción de entrada Mirar.

El Input System también contiene una variedad de API para que otros sistemas puedan acceder a datos en tiempo de ejecución que se pueden mostrar en la interfaz de usuario o en otros elementos visuales. El proyecto de ejemplo Warriors utiliza datos de Player Input para mostrar información como el dispositivo del jugador actual, el ID de entrada del jugador o incluso para actualizar los controles de revinculación basados en UI en la vinculación actual. Creamos un sistema personalizado que toma el dispositivo y las cadenas de enlace y devuelve un ícono específico.
Por ejemplo, si el jugador está usando un controlador Xbox y la acción Ataque está vinculada al botón de contexto norte, esto mostrará un ícono de botón Y. Sin embargo, si el jugador está usando un teclado, se mostrará una cadena para la tecla del teclado asignada actualmente. Le invitamos a extraer y utilizar esta herramienta Configurador de pantalla de dispositivo en sus propios proyectos.

El paquete del Input System también contiene varios ejemplos adicionales que puedes explorar en el Administrador de paquetes. Puede utilizarlos como referencia y ampliarlos o adaptarlos para sus propios proyectos. También puedes encontrar la documentación oficial allí, incluida esta Guía de inicio rápido.
El Input System 1.1 se encuentra actualmente en versión preliminar y trae muchas correcciones y algunas mejoras. Ahora puede guardar y cargar reenlaces como JSON (consulte el script de muestra RebindSaveLoad.cs) y los diseños de dispositivos ahora se pueden precompilar, lo que reduce en gran medida el tiempo de instanciación y el costo del montón de recolección de basura (GC) para estos dispositivos.
Esperamos que el proyecto de muestra y otros materiales de aprendizaje le ayuden a comenzar a utilizar el Input System para dar vida a sus ideas. Comparte lo que quieres aprender a continuación en la sección de comentarios a continuación. Además, esté atento a la página del Input System para obtener más tutoriales y otros recursos.
