La programmation dans Unity pour les programmeurs expérimentés

Pour les programmeurs qui débutent avec Unity

Dans Unity, vous pouvez utiliser des scripts pour développer la quasi totalité du jeu ou tout autre contenu interactif en temps réel. Unity prend en charge la programmation de scripts en C#. Il existe deux façons principales de concevoir vos scripts en C# dans Unity : la conception orientée objets, qui est l'approche traditionnelle, et la conception orientée données, qui est la plus plébiscitée. Cette dernière approche est désormais possible dans Unity pour certaines utilisations spécifiques, comme notre nouvelle pile technologique orientée vers les données (DOTS) multithread à hautes performances.

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.

En savoir plus Consulter la documentation sur l'API Unity

Les GameObjects et les Composants dans Unity

L'intégralité du gameplay et de l'interactivité développée dans Unity est basée sur trois blocs de base : les GameObjects, les composants et les variables.

Tout objet d'un jeu est un GameObject : c'est le cas des personnages, des éclairages, des effets spéciaux, des accessoires, bref, de tout.

Composants 
Les GameObjects ne peuvent rien accomplir seuls. Pour qu'il puisse devenir plus qu'un objet, il lui faut des propriétés, obtenues par l'ajout de Composants. 

Les Composants définissent et contrôlent le comportement des GameObjects auxquels ils sont attribués. Un simple exemple est la création d'un éclairage, qui implique d'attribuer un Composant de lumière à un GameObject (voir ci-dessous). Ou d'ajouter un Composant Rigidbody à un objet pour qu'il tombe. 

Les Composants ont de nombreuses propriétés modifiables, ou variables, qui peuvent être ajustées dans la fenêtre Inspector, dans l'Éditeur Unity et/ou via un script. Dans l'exemple ci-dessus, les propriétés de la lumière comprennent la portée, la couleur et l'intensité.

Les Composants de scripts dans Unity

Les Composants intégrés de Unity sont très polyvalents, mais vous aurez bientôt besoin d'aller plus loin pour mettre en place votre propre logique. Pour cela, vous devrez utiliser des scripts pour appliquer votre propre logique et des comportements propres à votre jeu, puis ajouter ces scripts à vos GameObjects en qualité de Composants. Chaque script se relie au fonctionnement interne de Unity en implémentant une classe dérivée de la classe intégrée, MonoBehaviour.

Vos Composants de script vous permettront de faire de nombreuses actions : déclencher des événements, créer des collisions, appliquer de la physique, réagir aux entrées utilisateur et bien, bien plus. Pour plus d'informations, consultez la page de l'API de programmation 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. Apprenez-en plus sur le système de composants d'entité de la DOTS dans cet article de blog.

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

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

En tant que programmeur, vous bénéficiez d'une grande flexibilité dans Unity, car vous pouvez étendre l'Éditeur avec vos propres fenêtres personnalisées, qui se comporteront exactement comme la fenêtre Inspector, Scene ou toute autre fenêtre standard. Ajoutez vos propres outils à Unity pour répondre aux besoins uniques de votre équipe et de votre flux de production, et donc booster votre efficacité.

Ce site utilise des cookies dans le but de vous offrir la meilleure expérience possible. Consultez notre politique de cookies pour en savoir plus.

Compris