Que recherchez-vous ?
Hero background image
La programmation dans Unity pour les programmeurs expérimentés
Vous vous lancez dans Unity et programmez en C++ ?

Unity prend en charge le langage C#, un standard partageant quelques points communs avec Java ou C++

Comparé à C++, C# est plus simple à apprendre. De plus, il s'agit d'un « langage géré », ce qui signifie qu'il se charge automatiquement de la mémoire à votre place : il affecte/désaffecte de la mémoire, il couvre les pertes de mémoire, etc.

De manière générale, le C# est préférable au C++ si vous voulez créer votre jeu, puis gérer par la suite les aspects plus avancés de la programmation.

Les GameObjects et les Composants dans Unity
Les GameObjects et les Composants dans Unity
Les Composants de scripts dans Unity
Démo Megacity de Unity, conçue avec la DOTS
Les avantages de la conception orientée données avec la DOTS

Le traditionnel concept GameObject-Composant fonctionne toujours si bien, car il est simple à comprendre, à la fois pour les débutants et pour les plus expérimentés, sans compter qu'il est simple de créer des IU intuitives pour ce système. Ajoutez un Composant Rigidbody à un GameObject et celui-ci tombe. Mettez un Composant d'éclairage et il émet de la lumière. Et ainsi de suite.

Cependant, le système de Composants a été conçu dans un cadre orienté objets, qui entraîne des problèmes pour les développeurs en ce qui concerne la gestion du cache et de la mémoire avec du matériel en perpétuelle évolution.

Les Composants et les GameObjects sont des éléments en « C++ lourd ». Tous les GameObjects ont un nom. Leurs Composants sont composés d'un wrapper en C# qui enveloppe des composants en C++. Il est donc simple de les manipuler, mais ils réduisent les performances, car ils sont souvent stockés de façon désorganisée. L'objet en C# peut être stocké n'importe où dans la mémoire. De même pour l'objet en C++. Ils ne sont pas rassemblés dans une mémoire contiguë. Dès qu'un objet est chargé pour être traité par le processeur, chaque élément doit être récupéré depuis différents endroits. L'opération peut être lente et inefficace et nécessite donc de nombreux contournements pour être optimisée.

Pour résoudre ces problèmes de performances, nous avons recréé le cœur de Unity avec la pile technologique orientée vers les données multithread à hautes performances, ou DOTS (actuellement disponible en aperçu).

La DOTS permet à votre jeu d'utiliser complètement et efficacement les processeurs multicœurs les plus récents. Elle est composée :

Dans la DOTS, l'ECS est le nouveau système de Composants ; ce que vous faisiez avec un GameObject dans l'approche traditionnelle orientée objets, vous le faites avec une entité dans ce nouveau système. Les Composants n'ont pas changé de nom. La différence essentielle réside dans l'organisation des données. Vous pouvez en savoir plus à ce sujet dans l’article de blog «Sur le DOTS : Système de composants d'entité (ECS)

Démo Megacity de Unity, conçue avec la DOTS
Profitez pleinement des appareils modernes

Utiliser l'ECS est non seulement une meilleure approche de la programmation pour des raisons de conception, mais cela vous place également dans la position idéale pour tirer parti du système de tâches en C# et du Compilateur Burst de Unity, pour vous permettre de tirer pleinement profit du matériel moderne.

Les systèmes multithread de la DOTS vous permettent de créer des jeux qui fonctionnent sur une vaste gamme d'appareils et de concevoir des mondes plus riches en éléments avec des simulations plus complexes. Le code performant produit contribue ensuite à un contrôle optimal de la température et de la durée de vie de la batterie sur les appareils des joueurs. En passant d'une conception orientée objets à une conception orientée données, vous pourrez facilement réutiliser votre code, tandis qu'il sera plus simple pour les autres de le comprendre et de l'utiliser comme base.

Étant donné qu'une partie de la technologie de la DOTS n'est encore disponible qu'en aperçu, nous conseillons aux développeurs de ne l'utiliser qu'afin de résoudre un problème de performances spécifique, et non pour bâtir tout leur projet. Rendez-vous dans la section « Plus de ressources » en bas de cette page pour trouver des liens vers des ressources sur la DOTS.

L'outil Unity Profiler pour l'optimisation des performances
Le débogage dans Unity

Le processus d'ajustement des paramètres et de débogage est très efficace dans Unity, car l'ensemble des variables du gameplay sont affichées quand les développeurs jouent. Ils peuvent donc les modifier sur-le-champ, sans écrire une seule ligne de code. Vous pouvez mettre le jeu en pause à tout moment ou analyser chaque élément de code individuellement.

Voici quelques précieuses ressources pour en savoir plus sur l'optimisation de Unity :

Le Profiler

L'outil Profiler Analyzer

Le profiler de mémoire

Comprendre l'optimisation dans Unity

L'optimisation des performances graphiques

Les bonnes pratiques générales (incluent des conseils approfondis sur l'optimisation du système d'IU de Unity)

Le système backend de programmation dans Unity

.FILET: .NET : Unity s'est servi de l'implémentation de l'exécution standard Mono pour proposer une programmation qui supporte C# en natif. Unity est actuellement fourni avec Visual Studio pour Mac, au lieu de MonoDevelop-Unity sur macOS. Sous Windows, Unity est équipé de Visual Studio.

L'exécution de la programmation .NET 4.6 dans Unity supporte une grande partie des nouvelles fonctionnalités incroyables de C#, ainsi que les outils de débogage disponibles avec C# 6.0 et plus. Elle fournit également une fascinante expérience avec les IDE en C#, pour accompagner ces nouvelles fonctionnalités en C#.

IL2CPP : IL2CPP : le système backend de programmation développé par Unity, que vous pouvez utiliser comme alternative à Mono pour la conception de projets sur certaines plateformes. Lorsque vous choisissez de créer un projet IL2CPP, Unity convertit le code IL à partir des scripts et l'assemble sous forme de code C++, avant de créer un fichier binaire natif (.exe, apk, ou .xap, par exemple) pour la plateforme de votre choix.

Remarque : IL2CPP est le seul système de programmation backend disponible pour créer pour iOS et WebGL.

Personnaliser Unity en étendant l'Éditeur
Plus de ressources
Passer votre jeu à la DOTS
Passer votre jeu à la DOTS
Démo Megacity conçue avec la DOTS
Documentation sur la DOTS
Outils et services inclus sur la plateforme de développement Unity
Aperçu de la plateforme de 3D temps réel de Unity