Une base de code Unity n'a pas besoin d'être un tas de "classes liées à un sujet".
Votre application gère les entrées de l'utilisateur, les calculs, les opérations de réseau et doit rendre une image à afficher à l'utilisateur à chaque image. Vous devez séparer les responsabilités.
En d'autres termes, vous devez essayer de réduire autant que possible le couplage entre votre vue et votre logique, et extraire vos opérations de mise en réseau dans un bloc séparé. Gardez également à l'esprit que vous devez concevoir votre module de jeu de manière à ce qu'il soit réutilisable autant que possible. Vous devez éviter d'utiliser la même structure de données dans différents modules et vous devez donc introduire un moyen d'assurer l'indépendance des données entre les modules apparentés.
Le principe SOLID est un concept clé de la programmation orientée objet qui résume ces idées :
S : Single responsibility principle : each class is responsible of one and only one task (thus no UI should be displayed by your network interface class)
O : Open/closed principle : each module you develop must be Open for extension but closed for modification, that is the architecture should anticipate further changes and thus provide ways to add new related items in an easy way through inheritance for examples
L : Liskov substitution principle : a subclass must preserve the purpose of its parent class, overrided methods or properties should have the same meaning as in parent class.
I : Interface segregation principle : Define interface by small unique roles, some class should be able to implement it and when doing so implement only methods useful to it.
D : Dependancy inversion principle : High-level modules should not depend on low-level modules, you must introduce some kind of abstraction through some interface. A great explanation can be found here : https://www.oodesign.com/dependency-inversion-principle.html
Afin de rendre les applications Unity 3D plus robustes, nous allons décrire dans ce post comment in est possible d'appliquer le principe de Clean Architecture to game development using Unity.
Appelons-le Clean Unity.
Cette architecture répond à la nécessité de maintenir une base de code propre, avec des modules à responsabilité unique, testable et d'organiser le code avec des intentions rather than a skeleton of your inner architecture choices.