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.
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.
L’ensemble du gameplay et de l’interactivité développés dans Unity repose sur trois éléments fondamentaux : Objets de jeu, composants et 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 ont de nombreuses propriétés modifiables, ou variables, qui peuvent être ajustées dans la fenêtre Inspector, dans l'Éditeur Unityet/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 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.
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.
- Du système de tâches C# pour faire fonctionner efficacement le code multithreadé.
- Du système de composants d'entité (ECS) pour rédiger du code haute-performance par défaut.
- Du Compilateur Burst, pour produire un code natif hautement optimisé.
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)
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.
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 :
Comprendre l'optimisation 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.