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.
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#.
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 cães (classe Dog : IAnimal{}) e gatos (classe Cat : 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.
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 o Configurable Enter Play Mode (Experimental) nas opções Project Settings > Editor > Enter Play Mode.
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.
No momento, esse recurso é experimental e estamos ansiosos para saber a sua opinião no fórum.
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 ativar o novo solucionador, vá para Configurações do projeto > Física.
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.
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–2000) que deseja que a janela do Profiler mostre.
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.
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.
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.
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.
Obtenha acesso a todos os itens acima e muito mais hoje.