Nuevas funciones y actualizaciones para programadores
Novedades
Este es un resumen de las principales actualizaciones en las herramientas para programadores. Para ver todos los detalles, consulta las notas de la versión.
Escribe menos código repetido con las nuevas versiones de nuestros paquetes de DOTS. Reemplaza los componentes de creación personalizada por un atributo simple [GenerateAuthoringComponent] y sustituye los largos constructores IJobForEach y IJobForEachWithEntity por el método más simple y mucho más rápido Entities.ForEach(), que ahora usa el compilador Burst y C# Job System.
El nuevo atributo SerializeReference te permite serializar las clases de C# como referencias en lugar de como tipos de valores. Eso significa que puedes tener objetos POCO (objetos C# antiguos) que hagan referencia unos a otros, lo cual simplifica el código para expresar y administrar estructuras de datos complejas, como los gráficos y los árboles.
También ofrece compatibilidad para que los campos puedan contener datos polimórficos. Por ejemplo, una lista del tipo List<IAnimal> puede contener perros (clase Dog : IAnimal{}) y gatos (clase Gato : IAnimal{}).
Los campos marcados para serialización como referencias ahora pueden expresar valores nulos de manera intrínseca. Antes, para serializar un campo nulo siempre había que deserializarlo con el constructor predeterminado de ese tipo.
La serialización de tipos no pertenecientes a Unity ha omitido tradicionalmente el polimorfismo. En la versión Unity 2019.3, la serialización polimórfica te permite mantener las referencias de los objetos que antes no sobrevivían el proceso de serialización y hacer referencia más apropiadamente a la cadena de herencia.
Actualmente, cuando ingresas a Play Mode en el Editor, Unity hace dos cosas: reinicia los estados del código (recarga de dominio) y vuelve a cargar la escena. Eso lleva tiempo y, cuando tu proyecto se vuelve más complejo, Unity Editor puede demorar en ingresar a Play Mode (modo de juego). Por eso, presentamos Configurable Enter Play Mode (etapa experimental) en Project Settings > Editor > Enter Play Mode.
Estas opciones te permiten desactivar la recarga de escenas o del dominio en el proceso de Enter Play Mode si no hay cambios en el código. Según los resultados de nuestras pruebas, el cambio en estas configuraciones puede ahorrar entre el 50 y el 90 % del tiempo de iteración, según el proyecto del que se trate.
Esta función es, por el momento, experimental. Esperamos conocer tu opinión al respecto en el foro.
Actualizamos la biblioteca PhysX de v3.4 a v4.1. Esto incluye el nuevo solucionador Temporal Gauss-Seidel, que permite que las uniones sean más resistentes al estiramiento y evita ciertos comportamientos erráticos antes vistos durante la simulación. Para activar el nuevo solucionador, vaya a Project Settings > Physics.
También incluimos el nuevo algoritmo Automatic Box Pruning de fase amplia, que puede calcular los límites del mundo y la cantidad de subdivisiones de forma automática. Esto representa una mejora respecto del algoritmo Multi-Box Pruning existente.
Además, hay un algoritmo de malla de fase media más rápido disponible en las plataformas de escritorio. No requiere que se construyan estructuras de aceleración que consumen muchos recursos (R-Trees), lo cual es útil para el contenido generado en tiempo de ejecución dado que se reduce el tiempo de instanciación de MeshCollider.
Agregamos también una nueva API para permitir la integración demorada de mallas en MeshCollider. Puedes ocultar el proceso de integración de mallas que consume gran cantidad de recursos computacionales detrás de una pantalla de carga o escenas de transición, como una escena de diálogo en un juego de aventuras. La API es segura en hilos, por lo que puedes invocar la función por fuera del hilo principal; por ejemplo, mediante C# Job System, a fin de integrar varias mallas al mismo tiempo.
Antes de la versión 2019.3, al investigar el rendimiento en la ventana Profiler, podías ver los datos de perfiles de 300 frames a la vez. Eso no siempre te daba tiempo suficiente para ver todos los frames que te interesaban realmente.
El recuento de frames configurable te permite extender ese período de captura. En la ventana Preferences, ahora puedes configurar la cantidad de frames (de 300 a 2000) que quieres que se muestren en la ventana Profiler.
El seguimiento y análisis de las asignaciones administradas es una función importante de Profiler en Unity.
La asignación administrada continua genera recolección de basura (GC), lo cual interfiere con la buena ejecución del juego por retraso multiframe. Saber cuándo se producen estas asignaciones así como conocer su origen en el código es esencial para desarrollar juegos con Unity.
En la versión 2019.3, introducimos las pilas de llamadas para las asignaciones administradas en los Perfiles de Juego. Esto te permite ver la función de C# de la que proviene la asignación que genera GC durante la creación de Perfiles de Juego.
Esta opción puede activarse mediante el selector Call Stacks.
Unity 2019.3 también incluye una mejora de nuestra compatibilidad con el control de versiones.
Incluye una cantidad de mejoras en la integración y la UX, y corrige nuestra integración Perforce, como el intento de reconexión automático en caso de que se pierda la conexión Perforce.
Ahora verás una barra de Version Control en la parte superior de la ventana Inspector. Allí podrás hacer operaciones adicionales, tales como Add (agregar), Lock (bloquear), Unlock (desbloquear) y Submit (enviar), entre otras mejoras.
Además, en el Inspector para assets no extraídos, ahora puedes hacer clic para copiar los valores de los campos de Inspector desactivados.
Consulta las notas de la versión para ver más detalles sobre las mejoras y correcciones de la interfaz de usuario (UI).
Esta versión incluye el nuevo sistema de assets con dirección (es decir, los Addressables), que permite la carga de assets por su "dirección". También agiliza la administración de assets ya que simplifica la creación e implementación de paquetes de contenido. En resumen, Addressables permite que tu equipo administre con gran eficiencia el contenido en vivo complejo.
El FPS Netcode que se utiliza en DOTS Sample está construido usando DOTS como base, lo cual hace que resulte muy fácil crear un juego en red con una arquitectura similar. Incluye predicción del lado del cliente, servidor acreditado, interpolación y compensación de retardo.
Mira la introducción a FPS NetCode que presentó Tim Johansson en su charla de Unite.
Obtén acceso a todas las características mencionadas y mucho más hoy mismo.