O que você está procurando?
Hero background image

Scripts em Unity para programadores experientes

Você está chegando ao Unity com uma base em C++?

O Unity oferece suporte a C#, uma linguagem padrão do setor com algumas semelhanças a Java ou C++

Comparada com C++, C# é mais fácil de aprender. Além disso, é uma “linguagem gerenciada”, o que significa que ela gerencia a memória automaticamente para você: alocação/desalocação de memória, tratamento de vazamentos de memória e assim por diante.

No geral, prefere-se C# a C++ se você quiser desenvolver um jogo primeiro e, depois, lidar com aspectos mais avançados de programação.

GameObjects e componentes em Unity
GameObjects e componentes em Unity
Componentes de script em Unity
Demonstração do Unity Megacity criada em DOTS
Benefícios do design orientado a dados com DOTS

O conceito tradicional de GameObject-componente continua a funcionar bem pois é fácil de entender para programadores e não programadores, e fácil de criar UIs intuitivas para ele. Adicione um componente RigidBody a um GameObject e ele começará a cair, ou um componente de luz a um GameObject e ele emitirá luz. E assim por diante.

No entanto, o sistema de componentes foi desenvolvido em uma estrutura orientada a objetos e cria desafios para desenvolvedores no que diz respeito ao gerenciamento do cache e da memória em hardware em evolução contínua.

Componentes e GameObjects são objetos de conteúdo intenso em C++. Todos os GameObjects têm um nome. Seus componentes são wrappers C# sobre componentes C++. Isso facilita o trabalho com eles, no entanto, isso pode afetar o desempenho pois eles acabam armazenados de maneira não estruturada. Esse objeto em C# pode estar em qualquer lugar na memória. O objeto em C++ também pode estar em qualquer lugar na memória. As coisas não são agrupadas em memória contínua. Toda vez que algo é carregado na CPU para processamento, tudo precisa ser buscado em diversos locais. Isso pode ser lento e ineficiente, exigindo, assim, muitas alternativas de otimização.

Para abordar esses problemas de desempenho, estamos reconstruindo a base fundamental do Unity com o Data-Oriented Technology Stack, ou DOTS (atualmente em pré-visualização), multithread de alto desempenho.

DOTS permite que os jogos utilizem em sua totalidade os processadores multinúcleo mais recentes de maneira eficiente. É composto por:

Em DOTS, o ECS é o novo sistema de componentes. O que é feito com um GameObject na abordagem tradicional orientada a objetos, é feito com uma entidade nesse novo sistema. Os componentes ainda são chamadas dessa maneira. A principal diferença está no layout de dados. Você pode ler mais sobre isso na postagem do blog “Em PONTOS: Sistema de Entidade de Componentes

Demonstração do Unity Megacity criada em DOTS
Aproveite ao máximo o hardware moderno

Além de ser uma maneira melhor para abordar a programação de jogos por motivos de design, usar o ECS coloca você em uma posição ideal para aproveitar o sistema de trabalho em C# e o Compilador Burst do Unity, permitindo que você obtenha todas as vantagens do hardware moderno atual.

Os sistemas multithread do DOTS permitem criar jogos que podem ser executados em uma variedade de hardware e desenvolver mundos de jogo mais completos com mais elementos e simulações mais complexas. Por sua vez, o código eficaz contribui para controle térmico e vida útil da bateria ótimos nos dispositivos móveis dos jogadores. Ao passar do design orientado a objetos para orientado a dados, pode ser mais fácil reutilizar seu código e a compreensão e o trabalho de outras pessoas nele.

Como parte da tecnologia do DOTS está em pré-visualização, é aconselhado que os desenvolvedores usem ele para solucionar um desafio de desempenho específico em seus projetos, em vez de desenvolver projetos inteiros nele. Confira a seção “Mais recursos” na parte inferior desta página a fim de obter links para recursos importantes do DOTS.

O Unity Profiler para otimização de desempenho
Depuração em Unity

Ajustar e depurar em Unity é eficiente pois todas as variáveis da jogabilidade são mostradas à medida que os desenvolvedores jogam, portanto, alterações podem ser feitas rapidamente, sem escrever uma única linha de código. O jogo pode ser pausado a qualquer momento ou você pode analisar o código, instrução por instrução.

Aqui estão alguns ótimos recursos para saber mais sobre a otimização em Unity:

O Profiler

O Profiler Analyzer

O Memory Profiler

Entender a otimização em Unity

Otimizar o desempenho gráfico

Melhores práticas gerais (incluindo dicas extensas sobre a otimização do sistema de UI do Unity)

Back-ends de script em Unity

.NET: .NET: Unity usou uma implementação do tempo de execução padrão Mono para scripts com suporte nativo a C#. Atualmente, o Unity é fornecido com Visual Studio para Mac em vez de MonoDevelop-Unity em macOS. No Windows, o Unity é fornecido com Visual Studio.

O tempo de execução de scripts .NET 4.6 em Unity oferece suporte a muitos dos novos recursos empolgantes em C# e depuração disponíveis em C# 6.0 e posterior. Isso também oferece uma ótima experiência IDE em C# para acompanhar os novos recursos em C#.

IL2CPP: IL2CPP: este é um back-end de scripts desenvolvido em Unity que pode ser usado como alternativa ao Mono ao compilar projetos para algumas plataformas. Quando você opta por compilar um projeto usando IL2CPP, o Unity converte código IL de scripts e organiza em código C++, antes de criar um arquivo binário nativo (por exemplo, .exe, apk, .xap) para sua plataforma escolhida.

Observe que IL2CPP é o único back-end de scripts disponível ao compilar para iOS e WebGL.

Personalizar o Unity ampliando o Editor

Mais recursos

Converter seu jogo para DOTS
Converter seu jogo para DOTS
Demonstração de Megacity desenvolvida em DOTS
Documentação DOTS
Ferramentas e serviços incluídas na plataforma de desenvolvimento em Unity
Visão geral da plataforma 3D em tempo real do Unity