Versión 2019.3 de Unity

Nuevas funciones y actualizaciones para programadores

Conoce las novedades para desarrolladores en Unity 2019.3, incluidas importantes actualizaciones en DOTS (pila de tecnología basada en datos), mejor control de versiones, la opción de configurar el ingreso al modo de juego (Configurable Enter Play Mode), mejoras en la serialización, actualizaciones de física y mucho más.

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.

Actualización de DOTS Game Code

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.

Para comenzar a escribir código DOTS de la nueva forma, instala el paquete Entities (vista previa) de Package Manager.

DOTS_game_code_update.cs (C#)
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Jobs;
using Unity.Sample.Core;
using Unity.Transforms;
using UnityEngine;
[GenerateAuthoringComponent]
struct Velocity : IComponentData
{
	public float value;
}
class ApplyVelocitySystem : JobComponentSystem
{
	protected override JobHandle OnUpdate(JobHandle inputDeps)
	{
		float deltaTime = Time.deltaTime;
		return Entities.ForEach((ref Translation translation, in Velocity velocity) =>
		{
			translation.Value += velocity.Value * deltaTime;
		}).Schedule(inputDeps);
	}
}
Más información

Mejoras en la serialización

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 (class Perro : IAnimal{}) y gatos (class 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.

Serialization_improvements.cs (C#)
using System;
using System.Collections.Generic;
using UnityEngine;

public interface IShape {}
[Serializable]
public class Cube : IShape
{
    public Vector3 size;
}
[ExecuteInEditMode]
public class BuildingBlocks : MonoBehaviour
{
    [SerializeReference]
    public List<IShape> inventory;
   void OnEnable()
    {
        if (inventory == null)
        {
            inventory = new List<IShape>()
            {
                new Cube() {size = new Vector3(1.0f, 1.0f, 1.0f)}
            };
            Debug.Log("Created list");
        }
        else
            Debug.Log("Read list");
    }
}
Más información

Iteración más rápida con Configurable Enter Play Mode

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 > opciones de 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.

Consulta Cómo configurar Play Mode en la documentación para ver más detalles sobre cómo modificar tu código correctamente si desactivaste la recarga de dominio.

También puedes acceder a esta función a través de una API y una Callback si quieres restablecer el estado del juego al momento anterior a haber ingresado en Play Mode.

Esta función es, por el momento, experimental. Esperamos conocer tu opinión al respecto en el foro.

Más información

Biblioteca PhysX actualizada de v3.4 a v4.1

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, ve 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. 

Para más información, consulta la sección "Migrating from PhysX SDK 3.4 to 4.0" en la PhysX 4.1 SDK Guide (Guía sobre SDK de PhysX 4.1) de NVIDIA.

Más información

Mejora de Profiler: Recuento de frames configurable

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.

Más información

Mejora de Profiler: Compatibilidad de Deep Profile en los Perfiles de Juego

Con esta actualización, puedes activar la compatibilidad con Deep Profiling para todos los Perfiles de Juego en la ventana Build o a través de la API de BuildPlayer.

Cuando diseñas un Perfil de Juego compatible con Deep Profiling, puedes registrar las marcas de tiempo en la entrada y salida de los métodos de C#. No obstante, esta instrumentación de C# puede disminuir el rendimiento, por lo que agregamos la opción de desactivarlo por Perfil de Juego.

Más información

Mejora de Profiler: Compatibilidad con las pilas de llamadas de asignación administrada en los Perfiles de Juego

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.

Más información

Mejoras en el control de versiones

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).

Consulta las notas de la versión

Addressables

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.

Más información

Netcode

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 realizó Tim Johansson en su charla de Unite.

Más información

Descarga Unity 2019.3 ahora

Obtén acceso a todas las características mencionadas y mucho más hoy mismo.

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