Creación de scripts en Unity para programadores expertos

Para los programadores que utilizan Unity por primera vez

En Unity, puedes utilizar scripts para desarrollar prácticamente cualquier parte de un juego u otro contenido interactivo en tiempo real. Unity es compatible con la creación de scripts en C# y existen dos opciones principales para estructurar tus scripts de C# en Unity: el diseño orientado a los objetos, que es el enfoque tradicional y más comúnmente utilizado, y el diseño orientado a los datos, que ahora es posible en Unity, para los casos de uso específicos, por medio de nuestra nueva pila de tecnología basada en datos (DOTS) multiproceso de alto rendimiento.

¿Tienes experiencia en C++ y estás empezando a utilizar Unity?

Unity es compatible con C#, un lenguaje estándar del sector que tiene algunas similitudes con Java o C++

C# es más fácil de aprender que C++. Además, es un "lenguaje administrado", lo que significa que administra la memoria automáticamente por ti: asigna y cancela la asignación de memoria, cubre las fugas de memoria, etc.

En general, es preferible utilizar C# en lugar de C++ si quieres crear un juego primero y lidiar con los aspectos más avanzados de la programación después.

GameObjects y componentes en Unity

Toda la jugabilidad y la interactividad desarrollada en Unity se construye sobre tres pilares fundamentales: GameObjects, componentes y variables.

Cualquier objeto que forma parte de un juego es un GameObject. Esto incluye a los personajes, luces, efectos especiales, accesorios y todo lo demás.

Componentes 
Los GameObjects no pueden hacer nada por sí mismos. Para que se conviertan en algo real, debes asignar propiedades a un GameObject, y esto se hace al agregar componentes. 

Los componentes definen y controlan el comportamiento de los GameObjects a los que están asociados. Un ejemplo sencillo puede ser la creación de una luz, para lo que es necesario asociar un componente de luz a un GameObject (ver abajo). O puedes agregar un componente Rigidbody a un objeto para hacer que caiga. 

Los componentes tienen cualquier cantidad de propiedades editables, o variables, que se pueden modificar en la ventana del Inspector del Unity Editor o por medio de un script. En el ejemplo anterior, algunas propiedades de la luz son el rango, el color y la intensidad.

Componentes de creación de scripts en Unity

Los componentes integrados de Unity son muy versátiles, pero pronto te darás cuenta de que debes ir más allá de lo que pueden ofrecerte para implementar tu propia lógica. Para hacer esto, deberás utilizar scripts para implementar tu propia lógica y tu propio comportamiento en el juego, y después agregar esos scripts como componentes a los GameObjects. Cada script crea su conexión con los procesos internos de Unity al implementar una clase que se deriva de la clase integrada, llamada MonoBehaviour.

Tus componentes de scripts te permitirán hacer muchas cosas: activar eventos del juego, buscar colisiones, aplicar física, responder a las entradas de los usuarios y mucho más. Para obtener más información, consulta la API de creación de scripts de Unity.

Demostración de Unity Megacity creada en DOTS

Beneficios del diseño orientado a los datos con DOTS

El concepto tradicional de GameObject-componente aún funciona bien porque es fácil de entender para los programadores y para quienes no tienen experiencia de programación, además de que es fácil crear interfaces de usuario intuitivas para este concepto. Si agregas un componente Rigidbody a un GameObject, este comenzará a caer; o, si agregas un componente de luz a un GameObject, este comenzará a emitir luz. Y así sucesivamente. 

Sin embargo, el sistema de componentes se escribió en un marco de trabajo orientado a los objetos y genera ciertos desafíos para los desarrolladores en cuanto a la administración de la memoria y la caché en el hardware que evoluciona constantemente.  

Los componentes y los GameObjects son objetos "con una gran cantidad de C++". Todos los GameObjects tienen un nombre. Sus componentes son envoltorios de C# colocados sobre componentes de C++. Esto hace que sean fáciles de utilizar, pero puede afectar al rendimiento, pues pueden terminar almacenados de una manera no estructurada. Ese objeto de C# puede estar en cualquier parte de la memoria. El objeto de C++ también puede estar en cualquier parte de la memoria. Los elementos no se agrupan en bloques contiguos de la memoria. Cada vez que se carga un elemento en el CPU para su procesamiento, todos los elementos que lo componen se deben obtener desde ubicaciones diferentes. Esto se puede convertir en un proceso lento e ineficaz y, por lo tanto, puede requerir muchas soluciones alternativas de optimización.

Para enfrentar estos problemas de rendimiento, estamos rediseñando la base de Unity con la pila de tecnología basada en datos (o DOTS) multiproceso (actualmente en la versión de vista previa). 

DOTS hace posible que tu juego utilice plenamente los procesadores multinúcleo más nuevos de forma eficiente. Esta solución está compuesta por: 

En DOTS, el ECS es el nuevo sistema de componentes. En este nuevo sistema, podrás utilizar una entidad para hacer cualquier cosa que se hace normalmente con un GameObject en el método tradicional orientado a los objetos. Los componentes se siguen llamando de la misma manera. La diferencia más importante es el formato de los datos. Puedes obtener más información al respecto al leer la publicación del blog titulada "Sobre DOTS: sistema de componentes de entidad".

Demostración de Unity Megacity creada en DOTS

Aprovecha al máximo el hardware moderno

Además de que es un mejor enfoque para la programación de juegos por razones relacionadas con el diseño, el uso de ECS te pone en una posición ideal para aprovechar C# Job System y el compilador Burst de Unity, lo que te permite aprovechar al máximo las capacidades del hardware moderno. 

Los sistemas multiproceso de DOTS te permiten crear juegos que se pueden ejecutar en una gran variedad de hardware y desarrollar mundos de juego más completos, con más elementos y simulaciones más complejas. Por su parte, el código de alto rendimiento contribuye para obtener el mejor control de temperatura y aumentar la vida útil de la batería en los dispositivos móviles de los jugadores. Al hacer la transición del diseño orientado a los objetos al diseño orientado a los datos, puedes reutilizar tu código, y otras personas pueden entenderlo y trabajar en él, con mayor facilidad.

Debido a que algunas partes de la tecnología de DOTS están en la versión de vista previa, se recomienda que los desarrolladores la utilicen para resolver un desafío de rendimiento específico en sus proyectos, en lugar de utilizarla para crear proyectos completos. Consulte la sección "Más recursos" en la parte inferior de esta página, donde encontrarás los enlaces para los recursos clave sobre DOTS.

Unity Profiler: una herramienta para la optimización del rendimiento

Depuración en Unity

Las modificaciones y la depuración son eficientes en Unity porque los desarrolladores pueden ver todas las variables mientras juegan, lo que les permite cambiar cualquier cosa sobre la marcha y sin escribir ni una sola línea de código. Puedes pausar el juego en cualquier momento o revisar el código un enunciado a la vez. 

Estos son algunos recursos fabulosos para obtener más información sobre la optimización en Unity: 

El Profiler 

El Profile Analyzer

El Memory Profiler 

Comprender la optimización en Unity

Optimización del rendimiento gráfico

Prácticas recomendadas generales (incluye una gran variedad de consejos para optimizar el sistema de la interfaz de usuario (UI) de Unity)

Backends de creación de scripts en Unity

.NET: Unity utilizó una implementación del tiempo de ejecución estándar Mono para la creación de scripts que es compatible con C# de forma nativa. Unity actualmente incluye Visual Studio para Mac en lugar de MonoDevelop-Unity en macOS. En Windows, Unity incluye Visual Studio. 

El tiempo de ejecución para la creación de scripts .NET 4.6 de Unity es compatible con muchas de las nuevas características emocionantes de C# y con las funciones de depuración disponibles en C# 6.0 y versiones posteriores. Esto también ofrece una excelente experiencia de IDE en C# para acompañar a las nuevas características de C#.

IL2CPP: este es un backend de creación de scripts desarrollado por Unity, y lo puedes utilizar como alternativa de Mono al crear proyectos para algunas plataformas. Si eliges crear un proyecto con IL2CPP, Unity convierte el código IL de los scripts y los ensamblados en código de C++, y después crea un archivo binario nativo (por ejemplo, .exe, .apk o .xap) para la plataforma que elijas. 

Ten en cuenta que IL2CPP es el único backend de creación de scripts disponible al crear proyectos para iOS y WebGL.

Personaliza Unity al extender el Editor

Si eres un programador, Unity te ofrece una gran flexibilidad porque puedes extender el editor con tus propias ventanas personalizadas que tienen el mismo comportamiento que las ventanas de Inspector, Scene o cualquier otra ventana integrada en el editor estándar. Al agregar tus propias herramientas a Unity, puedes aumentar la eficiencia de tus proyectos al utilizar tus propios flujos de trabajo y atender las necesidades exclusivas de tu equipo.

Usamos cookies para brindarte la mejor experiencia en nuestro sitio web. Visita nuestra página de política de cookies si deseas más información.

Listo