Lançamento do Unity 2019.3

Novos recursos e atualizações para programadores

Conheça as novidades para programadores no Unity 2019.3, incluindo atualizações importantes para DOTS, controle de versão melhorado, Entrada no Modo Play configurável, melhorias para serialização, atualizações de física e muito mais.

Novidades

Aqui está uma visão geral sobre as principais atualizações para ferramentas de programador. Para obter todos os detalhes, confira as notas de lançamento.

Atualização para DOTS Game Code

Escreva menos código de boilerplate com as novas versões dos nossos pacotes DOTS. Substitua componentes de criação personalizados por um simples atributo [GenerateAuthoringComponent] e substitua os elementos IJobForEach e IJobForEachWithEntity verbosos pelo Entities.ForEach() simplificado, porém tão rápido quanto, que agora usa o Compilador Burst e o sistema de trabalho em C#.

Para começar a escrever código DOTS da nova maneira, instale o pacote Entities (visualização) do 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);
	}
}
Saiba mais

Melhorias de serialização

O novo atributo SerializeReference permite que você serialize classes C# como referências em vez de tipos de valor. Isso significa que você pode ter POCOs (plain old C# objects) fazendo referência uns aos outros, simplificando o código para expressar e gerenciar estruturas de dados complexas, como gráficos e árvores.

Também oferece suporte para que os campos possam conter dados polifórmicos. Por exemplo, uma lista do tipo List<IAnimal> pode conter cachorros (classe Cachorro : IAnimal{}) e gatos (classe Gato : IAnimal{}).

Os campos marcados para serialização como referências agora podem expressar valores nulos de maneira intrínseca. Antes, serializar um campo vazio sempre cancelaria a serialização usando o construtor padrão daquele tipo.

Tradicionalmente, a serialização de tipos não Unity ignorou o polimorfismo. No Unity 2019.3, a serialização polimórfica permite que você mantenha as referências do objeto que antes não sobreviviam ao processo de serialização, e fazer referência de maneira mais correta à cadeia de sucessão.

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");
    }
}
Saiba mais

Iteração mais rápida com a Entrada no Modo Play configurável

Atualmente, ao entrar no Modo Play no Editor, o Unity faz duas coisas: redefine os estados de scripts (Domain Reload) e recarrega a Cena. Isso leva tempo e quando seu projeto fica mais complexo, o Unity Editor pode apresentar lentidão para entrar no Modo Play. É por isso que estamos introduzindo a Entrada no Modo Play (experimental) em Project Settings > Editor > Enter Play Mode options

Essas opções permitem que você desabilite recarregamento de domínio e/ou cena a partir do processo de Entrada no Modo Play quando não houver alterações de código. Com base nos resultados do nosso teste, alterar essas configurações pode economizar 50–90% do tempo de iteração, dependendo do projeto.

Confira Como configurar o Modo Play na documentação para obter mais detalhes sobre como modificar seus scripts corretamente ao desabilitar Domain Reload.

Você também pode acessar esse recurso por meio de uma API e um callback se quiser redefinir o estado do jogo antes de entrar no Modo Play.

No momento, esse recurso é experimental e estamos ansiosos para saber a sua opinião no fórum.

Saiba mais

Biblioteca PhysX atualizada de v3.4 para v4.1

Nós atualizamos a biblioteca PhysX de v3.4 para v4.1. Isso inclui o novo solucionador Temporal Gauss-Seidel, que permite que as uniões sejam mais resistentes ao excesso de extensão e impede comportamento irregular visto anteriormente durante a simulação. Para habilitar o novo solucionador, acesse Project Settings > Physics

Também revelamos o novo algoritmo Automatic Box Pruning de fase ampla, capaz de computar as fronteiras de mundo e o número de subdivisões automaticamente. Isso é uma atualização do algoritmo Multi-Box Pruning existente.

Além disso, um algoritmo de fase intermediária de malha mais rápido está disponível em plataformas de desktop. Não exige estruturas de aceleração que consomem muitos recursos para ser construído (R-Trees), o que é útil para conteúdo gerado em tempo de execução pois o tempo de instanciação MeshCollider será reduzido.

Também adicionamos uma nova API para permitir baking atrasado de malhas para MeshCollider. Você pode ocultar o processo de baking de malhas intenso do ponto de vista computacional por trás de uma tela de carregamento ou cenas de transição, como uma cena de diálogo em um jogo de aventura. Essa API é segura para threads, para que você possa chamar a função de fora da thread principal, incluindo via sistema de trabalho em C#, para fazer o baking de várias malhas ao mesmo tempo. 

Para obter mais informações, consulte a seção “Migrating from PhysX SDK 3.4 to 4.0” no PhysX 4.1 SDK Guide da NVIDIA.

Saiba mais

Melhoria do Profiler: contagem de quadros configurável

Antes do 2019.3, ao investigar o desempenho por meio da janela do Profiler, você podia ver dados de perfil de 300 quadros por vez. Isso nem sempre oferecia tempo suficiente para pegar os quadros que realmente importavam.

A contagem de quadros configurável permite estender essa janela de captura. Na janela Preferences, agora você pode configurar o número de quadros (300–2.000) que deseja que a janela do Profiler mostre.

Saiba mais

Melhoria do Profiler: suporte a Deep Profile em Players

Com essa atualização você pode habilitar Deep Profiling Support para todos os Players na janela Build ou com a API BuildPlayer.

Ao criar um Player com Deep Profiling Support, é possível registrar carimbos de data/hora ao entrar e sair dos métodos C#. No entanto, essa instrumentação em C# pode acompanhar um custo de desempenho, portanto, adicionamos a opção de desativá-la por Player.

Saiba mais

Melhoria do Profiler: suporte a pilhas de chamada de alocação gerenciadas em Players

O rastreamento e a análise de alocações gerenciados é um recurso importante do Profiler do Unity.
A alocação gerenciada contínua faz com que a Garbage Collection (GC) entre em ação e prejudique a jogabilidade suave com atraso de vários quadros. Saber quando as alocações acontecem e suas origens no código são informações essenciais ao desenvolver jogos com o Unity.

No 2019.3, nós introduzimos pilhas de chamada para alocações gerenciadas em Players. Isso permite que você veja a função em C# em da qual uma alocação de GC é proveniente ao criar perfil de Players.

A opção pode ser habilitada com a chave Call Stacks.

Saiba mais

Melhorias no controle de versão

O Unity 2019.3 também inclui uma modernização do nosso suporte ao controle de versão.

Isso inclui diversas melhorias de UX e integração, e correções para a nossa integração Perforce, como tentativa de reconexão automática se uma conexão Perforce for perdida.

Uma barra Version Control agora está disponível na parte superior da janela Inspector, permitindo que você realize operações adicionais, como Add, Lock, Unlock e Submit, entre outras melhorias.

Além disso, no Inspector para assets não extraídos, agora você pode clicar com o botão direito do mouse para copiar os valores de campos desabilitados do Inspector.

Confira as notas de lançamento para obter mais detalhes sobre todas as melhorias e correções de UI.

Consulte as notas de lançamento

Addressables

Esta versão inclui o novo Addressable Asset System (isto é, Addressables), que oferece uma maneira fácil para carregar assets por “endereço”, enquanto lida com as despesas gerais do gerenciamento de assets simplificando a criação e a implantação de pacotes de conteúdo. Resumindo, o Addressables permite que sua equipe gerencie com eficiência conteúdo ao vivo complexo.

Saiba mais

Netcode

O FPS Netcode usado no DOTS Sample é desenvolvido com base no DOTS e facilita a criação de um jogo em rede com arquitetura semelhante. Inclui previsão do lado do cliente, servidor autoritário, interpolação e compensação de atraso. 

Obtenha uma introdução ao FPS Netcode com a palestra de Tim Johansson na Unite.

Saiba mais

Baixar o Unity 2019.3 agora

Obtenha acesso a todos os itens acima e muito mais hoje.

Usamos cookies para garantir a melhor experiência no nosso site. Visite nossa página da política de cookies para obter mais informações.

Eu entendi