Vertical

Structure de dossiers pour les projets Unity

Après avoir travaillé quelques jours/semaines/mois sur un projet Unity on se retrouve souvent avec des fichiers rangés un peu n’importe comment dans la fenêtre projet. Avec ça arrivent les doublons, les fichiers en plusieurs versions, les soucis pour trouver le bon fichier… Pour éviter tous ces problèmes il est important de s’imposer dès le début du projet une rigueur dans le rangement des fichiers. Il y a évidemment plusieurs façons de s’y prendre.

2 écoles

Il existe deux grands systèmes de hiérarchisation de fichiers pour les projets Unity (voire même les autres). La hierarchie par fonction et la hierarchie par type.

Hiérarchie par fonction

Dans cette hiérarchie les fichiers sont rangés par grandes fonctionnalités du jeu. On retrouve par exemple tout ce qui touche au multijoueur dans un dossier, et tout ce qui touche à tel ou tel mode de jeu dans un autre. On se retrouve alors avec des dossiers identiques pour chaque fonction. Par exemple : scripts, graphismes, textures… sont présents pour le mode histoire ou le mode survie…

Cette façon de faire n’a d’intérêt que dans un projet que l’on peut facilement découper en grande sections distinctes. Ce qui est finalement assez rare car les différentes parties du jeu sont souvent très entrelacées.

Hiérarchie par type

C’est le système le plus utilisé. Il regroupe les fichiers par type, tous les scripts dans un dossier script, toutes les polices dans un dossier Font… C’est ce qu’on retrouve dans le projet de démo de Unity.

C’est également la hiérarchie que nous utilisons sur nos projets car elle permet de retrouver facilement ses fichiers. Nous séparons tous nos fichiers en fonction de leur provenance et de leur type. Tous les prefabs créés dans Unity sont regroupés dans un dossier prefab. Tous les assets graphiques du projet sont regroupés dans ProjectResources (textures, polices, models 3D, …). Tous les scripts sont regroupés et triés au sein du dossier Script.

Ceci est un exemple mais chaque projet peut bien sûr présenter des variations en fonction de ses besoins. Nous essayons cependant au maximum de conserver la même structure de projet en projet pour que chacun puisse facilement retrouver ses dossiers et fichiers.

 Les dossiers particuliers

Le dossier Plugins est très important car il permet de placer des scripts qui sont “précompilés”. Ils peuvent alors être utilisés dans l’éditeur directement. C’est pour celà qu’on place toujours les librairies extérieures dans ce dossier.

Le dossier Editor contient tous les scripts qui complètent les fonctionnalités de l’éditor (ajout de menu, ajout de fenêtres…). C’est utile pour customiser Unity pour une utilisation spécifique. Cela fera surement l’objet d’un article à venir !

Le dossier Resources est très particulier car tout ce qu’il contient sera intégré dans le build, utile ou non. Il existe une fonctionnalité dans Unity qui permet de charger au runtime des ressources. Celles-çi doivent être placées dans le dossier Resources, du coup Unity ne peut pas savoir “à l’avance” ce qui va être utile ou pas dans ce dossier. Faites attention à ne pas placer de fichiers lourds inutiles lors de l’exécution dans ce dossier ! C’est pour celà que notre dossier de ressources s’appelle “ProjectResources”.

Au final l’important est de trouver une structure qui corresponde à la fois au projet et aux personnes qui travaillent dessus. Mais au plus elle sera “fixe” moins le risque de perte ou de doublons sera présent.

Leave a Reply

Your email address will not be published. Required fields are marked *