Lors de la création d'un nouveau projet, c'est tellement propre, compréhensible, il n'y a pas de déchets en excès ... c'est vide. Plus le développement a lieu, plus il y a de déchets en excès, plus de dossiers obscurs, des fichiers y apparaissent, parfois des préfabriqués pour d'autres projets peuvent y arriver et toute l'organisation s'envole pour Tartar.
Il s'avère que l'organisation n'a jamais existé, le projet a trois ans, il est trop tard pour mettre les choses en ordre, ce n'est pas pratique de travailler et en général ...
Bienvenue dans le chaos, vous êtes ici parce que:- jamais pensé pourquoi vous avez besoin d'une structure de projet dans Unity
- vos projets ont un gâchis éternel et vous voulez vous en débarrasser
- à la recherche de nouveaux modes d'organisation
- perdu espoir de mettre les choses en ordre dans leur projet
Tôt ou tard, vous prendrez votre décision et elle vous conviendra le mieux, je ne peux que vous aider dans la recherche et vous proposer vos options. Nous allons examiner quelques exemples, analyser et élaborer la solution la plus appropriée. Nous parlerons également de la structuration, de la hiérarchie et des noms propres, et de la façon dont la commande aide à accélérer les choses.
Bienvenue au chat.Merci à tous ceux qui ont lu mon
matériel précédent. Ce sont les commentaires en dessous de lui qui m'ont poussé à écrire cet article. Plus informatif et utile, avec une introduction romantique mais un contenu pratique. Aujourd'hui, nous parlerons de choses assez évidentes, s'il y a quelque chose à ajouter, n'hésitez pas à écrire et à proposer vos propres options.
Au point.
Pourquoi avons-nous besoin d'une structure? - le temps. Nous économisons beaucoup de temps sur le débogage, l'ajout de nouvelles fonctionnalités, les fichiers, le nettoyage, à condition que notre organisation soit claire et pratique pour nous, à condition qu'elle le soit. Corriger les noms de fichiers, l'ordre, les balises et autres petites astuces peuvent faire gagner du temps.
Le réseau a suffisamment de documents similaires avec des exemples, mais pas beaucoup d'explications sur «pourquoi il en est ainsi». Je décrirai les solutions que j'utilise moi-même et comment elles me conviennent spécifiquement. Je ne pense pas que je vais apporter quelque chose de nouveau, mais la bonne organisation est le début du début de tout projet.
"Comment ça se passe?"
Prenons par exemple les collisionneurs pour l'environnement. Quels objets et avions avons-nous?
- sexe
- les murs
- obstacles (caisses, tonneaux, pierres, etc.)
- le plafond
Dans la hiérarchie de la scène, nous pouvons mettre tout cela dans un seul
objet de jeu , mais il sera difficile de rechercher.
Par conséquent, nous créerons un
objet de jeu séparé pour les collisionneurs de sol, murs, plafond et obstacles.
Par exemple, le niveau du jeu
Si nous avons plus de 10 enfants, je recommande d'écrire une balise, cela simplifie la recherche. Encore une fois, les collisionneurs, si nous parlons de 2D, le bord, le polygone, la boîte, le cercle sont utilisés et chacun peut être un collisionneur plan ou obstacle. Il peut être appelé
"coll_edge_N" ou
"coll_e_N" car les collisionneurs de murs ont un objet
Wall parent (qui à son tour a un objet parent
Colliders ), la question se pose de savoir si vous
devez écrire une balise du plan
"coll_wall_edge_N" , pour une recherche simplifiée, lorsque le nombre d'objets est important, vous gagner beaucoup de temps.
Nous obtenons quelque chose de similaire.
Organisation des dossiers dans UnityLe projet a également des règles assez claires.
À savoir:
- il devrait être clair où se trouve
- il est clair où ajouter de nouveaux fichiers et sources
- structure adaptative et confortable
- la structure n'est pas trop complexe et pas écrasée
Bien sûr, vous pouvez jeter n'importe quoi et n'importe où sans penser à l'organisation.
Comme ça
Vous pouvez faire quelque chose de plus organisé avec une structure claire.
Quelque chose comme ça
Voyons maintenant ce qui est nécessaire, ce qui ne l'est pas.
Il est très pratique de diviser le projet en
actifs internes et
actifs externes , c'est un plus.
Dans
les actifs externes , nous avons tous les actifs de tiers et rien de plus.
Il existe un dossier
Scène séparé dans lequel se trouvent toutes les scènes.
Le dossier des
scripts est également séparé, c'est plus pratique.
Le dossier le plus intéressant pour nous est celui
des actifs internesTout ce qui concerne la partie visible de notre jeu est là.

Quels dossiers sont nécessaires là-bas?
- Dossier principal Prefabs pour tous les prefabs
- Textures / Sprites à qui c'est plus pratique et selon qu'il s'agit d'un projet 2D ou 3D
- Matériaux matériaux ici et tout est clair
- Shaders de même, quelques questions
- Des animations
- Vfx
- Le son ici est une organisation simple dans le dossier lui-même et une séparation des sons en BGM, Impact FX, etc.
En tant qu'artiste VFX et artiste d'animation 2D / 3D, je m'attarderai plus en détail sur l'organisation de ces dossiers particuliers.
Pour l'animation d'unité, nous devons créer un
contrôle d' animation et un
clip d'animation , il existe plusieurs clips d'animation, il est donc plus pratique de les placer dans un dossier. De plus, vous avez besoin d'un dossier pour l'unité elle-même.
Cela ressemblera à ceci.
C'est pratique
Maintenant sur VFXDans le dossier avec vfx, vous avez besoin des
textures du dossier, des
matériaux et éventuellement des
préfabriqués . Il est plus pratique pour un artiste VFX de travailler dans ses dossiers et de ne pas gâcher tout le projet, mais de maintenir l'ordre dans son jardin. Les textures d'effets sont toujours des textures. Les matériaux pour les effets ont des paramètres différents, de l'
additif au
mélange alpha, et parfois une texture va à plusieurs matériaux, si le dossier de texture est à proximité, la recherche est plus facile. Si vous écrivez des shaders, il est plus pratique d'extraire des textures du dossier
VFX ; il est également plus pratique et logique de placer les matériaux du shader fini dans
VFX.Pourquoi ai-je besoin d'un dossier Corbeille?
Souvent, vous devez supprimer quelque chose, pas le fait que vous puissiez le faire et tout se passera bien, souvent quelque chose est perdu et si vous n'êtes pas le programmeur principal du projet, vous pouvez le faire. Il est également nécessaire de tester une fonctionnalité / idée et non le fait qu'elle prendra racine et soit généralement nécessaire. C'est à cela que sert le dossier de la
corbeille , tous les tests, tout ce qui doit être supprimé ou tout ce que vous ne voulez pas envoyer avec le commit actuel est préférable de le mettre ici et de vous inscrire ignorer pour la gita.
Organisation d'une hiérarchie dans UnityUn peu plus haut était un exemple sur les collisionneurs. Cette règle obéit à tout. Dans notre projet, nous avons appliqué une telle solution.

Nous venons d'ajouter
"--- nom du chapitre ---" c'est un objet vide qui ne porte que le nom. Cela semble être une chose inutile et superflue, mais cela simplifie parfois la recherche et la compréhension de la hiérarchie sur la scène. Une solution aussi simple vous permet d'accélérer plusieurs fois la recherche visuelle. Par exemple, nous avons un objet d'adversaires, nous pouvons compliquer et créer plusieurs objets enfants pour chaque type d'ennemi et les séparer pour les boss, plus créer une étiquette pour chaque ennemi. Et nous pouvons faire un objet mère pour les adversaires volant, désigner le symbole
^ ,
$ fort et le patron désigner comme
% . Pour les collisionneurs, cette solution n'est pas très pratique, mais pour les adversaires et leur séparation visuelle dans la hiérarchie - très bien.
Organisation par l'exemple de SpineLorsque nous parlons d'animation 2D ou 3D, l'importance de l'organisation et des noms va à un niveau différent. Vous pouvez recourir à la mocap d'animation et ne pas vous soucier de l'organisation, mais juste faire les mouvements nécessaires dans le studio et faire la finale juste là, malheureusement, cela ne se produit pas toujours. Il y a beaucoup de choses qui doivent être modifiées manuellement même lors de la capture de mouvement, mais nous ne parlons pas de cela. Comment corriger tous les mouvements, déterminer le point souhaité, l'os, quand il y en a plus de 20? Une personne simple avec 5 os ne sera pas difficile à organiser et à comprendre les connexions, et maintenant ajoutez-lui 10 doigts, c'est
plus difficile, non?Les règles sont les mêmes, mais dans l'animation, il existe des dépendances et des ossements enfants qui simplifient l'organisation. De plus, pour la perception visuelle, un changement de couleur des os est utilisé. Il y a toujours un os clé auquel d'autres os sont attachés, à ces os il y a encore des os et ainsi de suite jusqu'à la fin. Souvent, nous l'appelons simplement
Root , les hanches ou le torse s'en éloignent, la main gauche ou droite du torse, etc. Avec les noms, il nous est plus facile de comprendre quoi et où.
Mais l'exemple de la mise en évidence, aide dans le travail (par exemple,
Dragon Bones )

Règles principales
- clarté des noms
- commodité
- approche raisonnable
Conclusion
Les exemples ne sont que mes exemples. Une seule chose est évidente et certaine à coup sûr - les noms, la structure, l'ordre, pour chacun le sien, mais compréhensible pour les personnes avec lesquelles vous travaillez, personne ne ramassera vos décombres. Les grandes entreprises sont souvent plus exigeantes vis-à-vis de l'organisation, plus tôt vous apprendrez à maintenir l'ordre, plus ce sera facile pour vous à l'avenir.
Je ne vous engagerai pas pour une campagne de nettoyage, je vous ai donné un balai, utilisez-le.
Commentaires
Léopotam«ExternalAssets» est le chemin vers nulle part si vous devez non seulement ajouter des actifs, mais aussi les mettre à jour. La solution la plus correcte et la plus simple consiste à isoler les actifs du projet local (dans l'article, il s'agit de «InternalAssets») et à stocker les actifs externes tels que les auteurs les ont préparés - idéalement, dans des dossiers séparés au niveau du dossier «InternalAssets». Dans ce cas, la mise à jour devient facile et simple, vous n'avez pas besoin de trier par dossiers personnalisés ce qui peut venir dans la mise à jour et qui n'existait pas auparavant. De plus, il existe des dossiers spéciaux qui ne peuvent pas être déplacés et qui ne peuvent être qu'à la racine (Gizmos, Plugins / Android, Plugins / iOS, etc.).