Todos los comportamientos de los objetos de juego que formar una aplicación multimedia interactiva creada con Unity tienen que estar programados de alguna forma. El lenguaje más popular actualmente es C#, aunque es posible programar en UnityScript (similar a Javascript) e incluso años atrás se permitía usar el lenguaje Boo. Hoy día Unity admite incluso su propio lenguaje visual para programar dibujando nodos conectados entre sí.
Las lecciones a tratar en este tema son:
- Orientación a objetos
- Ejecución (en general)
- Conversión de objetos
- Acceso a propiedades
- Construcción de objetos
- Registro de componentes
- Gestión de la entrada
- Control de la ejecución
- Funciones
- Cálculo matemático
- Simulación física
- Gestión de escenas
- Gestión de la persistencia
- Percepción automática
- Movimiento automático
- Navegación automática
Se podría hablar de muchos más temas como la Temporización o la Concurrencia (pues las corrutinas en Unity son fundamentales), de cómo funciona el patrón Observer de los Actions/Funcs, explicar los fundamentos del lenguaje de Programación Visual de Unity (antiguo Bolt), y que también incluye el diseño de máquinas de estado como mecanismo de toma de decisiones. Podríamos tocar cuestiones específicas de la programación de la Interfaz de Usuario, o de la programación del Multijugador en Red… o irnos al Procesamiento de Analíticas incluso.
La gestión de entrada ha ido avanzando en Unity y ahora hay una nueva herramienta llamada Input Manager que permite configurar los controles de manera unificada para todas las plataformas sin necesidad de programarlo tú mismo… ¡pero ojo, porque esta herramienta genera código C# automáticamente que no debes editar tú directamente!
La programación del multijugador en red actualmente se hace con NetCode, siendo lo más habitual usar NetCode for Game Objects (NGO). En Udemy hay un curso gratuito en español sobre el tema. Antiguamente existía UNET, luego Unity abandono el tema de la red y surgieron Photon y otras soluciones de terceros, pero desde 2021 tenemos esta solución oficial que está funcionado bastante bien (tiene versión para DOTS y hasta ofrecen servicios gratuitos comunes para juegos online como Relay)
En las nuevas versiones de Unity ya es posible usar Visual Scripting (el antiguo lenguaje visual Bolt) para programar. Además de saber usar las herramientas y el lenguaje de programación correspondiente, también es importante establecer la configuración de proyecto adecuada para Visual Scripting. Desde ese panel de configuración se puede generar toda la parafernalia que usa el sistema y hasta hacer copias de seguridad de todo lo que hayas programado visualmente. En Type Options podéis elegir qué tipos pueden aparecer en los puertos de entrada y de salida de los nodos. En Node Library podéis elegir qué clases de nodos puede haber. Y con Regenerate Nodes se «regenera» todo el Visual Scripting para que en su herramienta de edición estén disponibles esos nodos, y esas entradas y salidas. Generate crea «cajones personalizados» (custom drawers) que ayudan sobre todo para lidiar con paquetes de los que no tienes código fuente. La primera vez que se usa Visual Scripting en un proyecto, o cada vez que se modifica el código C# de clases y métodos que necesitan ser usados desde Visual Scripting, hay que «regenerarlo» todo, para así tenerlo disponible cuando estéis trabajando/programando visualmente.
Guía de estilo
En C# se suele usar «Camel Case» para nombrar las variables, aunque se usa «Pascal Case» para los métodos y nombres de clase.
Recomendamos nombrar todo, clases y métodos, en inglés y siguiendo los principios de Clean Code para que estos sean lo más explicativos posibles. Sin embargo los comentarios y la documentación es preferible en español.
Más información
Para complementar es recomendable consultar otros documentos.
Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.