IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

Bonnes pratiques pour déclarer des variables


Sujet :

Unity

  1. #1
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut Bonnes pratiques pour déclarer des variables
    Bonjour tout le monde, ici tonton Nico (fraichement arrivé sur le site)

    Je me suis mis depuis peu à Unity et j'ai une question d'ordre générale sur les bonnes pratiques (excuser moi si je ne suis pas dans la bonne section au passage, ou du moins pas la plus optimale).

    Je fais un pti jeu 2D Idle (pour ceux qui connaissent) mais la question est bonne pour tous les projets par la suite; J'ai un "splash" screen avec un ControlleuJeu en mode Dontdestroyonload pour garder donc mes variables diverses en vie entre les menus de jeu/option/arbre de compétenses.
    Sur ce Controlleurjeu j'ai mes variables dans un script en C# avec l'utilisation de public class pour ranger par catégorie mes variables, en vulgarisant/simplifiant actuellement je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    [System.Serializable]
    public class Level
    {
        public int LevelSkill1;
        public int LevelSkill2;
     
    }
    [System.Serializable]
    public class Cout
    {
        public int CoutlSkill1;
        public int CoutlSkill1;
    }
     
    public class ControlleurJeu : MonoBehaviour {
        Code du jeu
    }
    Je trie par "catégorie" soit le level, le cout ... on peut imaginer par la suite du jeu forcément la VitesseDeDéplacement ou la DureeActivation, etc

    La question bête est donc sur la bonne pratique (on y arrive enfin ) : vaut-il mieux faire dans ce sens la donc comme dans mon exemple/projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Class Categorie 1                                    
         public int Skill1;                                      
         public int Skill2;    
     
    Class Categorie 2
        public int Skill1;
        public int Skill2; 
     
    etc
    etc
    etc
    ou au contraire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Classe Skill1                                                     
         public int Categorie1;                            
         public int Categorie2;                            
     
    Classe Skill2
       public int Categorie1;
       public int Categorie2;
     
    etc
    etc
    etc
    Comment faites vous en général? voir tout déclarer à la suite dans la class du ControlleurJeu sans utiliser de [System.Serializable]?
    Il est vrai que si j'ai 30 skill et 2 catégorie, dans la première méthode cela fait que 2 class à déclarer et dans la deuxième 30 :/ ou c'est selon chaque programmeur et ses habitudes?


    Remarque1: Désolé d'avance si c'est trivial car j'ai fais la prog en cours (il y a quelque années du coup) mais ce n'est pas du tout mon cursus principal
    Question bête numéro 1 : J'utilise le [System.Serializable] (vu dans un tuto) pour une question de visualisation/ordre, c'est bien ou cela peut amener des soucis dans l'utilisation et il ne faut pas le faire? il y a mieux?
    Question bête numéro 2 : le nombre de public class/variable par script est illimité j'imagine non? il vaut mieux quand même se limiter et faire plusieurs script quand on a trop de variable? ou ça sert a rien?

    J'espère avoir été assez clair et merci pour les courageux d'avoir lus jusqu'ici

    Merci d'avance pour ceux qui aurait envie de donner des conseils/avis
    Tonton
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Salut,

    pas de bonne ou mauvaise solution absolue selon moi.
    Il faut que ça ait du sens dans ton cas.
    Quelle est la hiérarchie entre skill et catégorie ? Est-ce que tu as une catégorie pour ranger les skills, ou chaque skill a juste une info de catégorie.
    De même, si tu as 30 skills, tu ne créeras pas 30 class. Si tu es malin, tu as une class de base qui contient les infos pour paramétrer tous les skills. Eventuellement plusieurs mais tu devrais toujours avoir une class de base puisque ce genre de trucs se rangera généralement dans des collections.
    Si tu as 3 skills boule de feu mineur, boule de feu majeur, boule de feu surpuissante, y'a fort à parier que les seules différences seront visuelles et un paramètre de puissance.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Merci pour ta réponse Bousk

    Je vois, c'est surtout être cohérent dans le projet en cours ou selon ses habitudes de travail...et surtout être malin au début pour en faire le moins plus tard (mais je me rend compte que je n'ai pas assez réfléchis en amont mon algorithme/ce que je veux et que du coup je modifie mon architecture/code et (forcément) ce n'est bien du tout bouh le vilain tonton

    Par contre pour les collections (et les 30 skills) j'avoue ne pas avoir suivis/comprendre; j'ai vu une utilisation de celles-ci rapidement quand on fait un foreach et c'est tout pour le moment, je dois rater quelque chose d'utile surement, je vais me renseigner dessus du coup

    Si j'ai 3 skills de boules avec juste la puissances différentes je vois yes ou sinon il faut créer des variables spécifiques en effet, il faut bien que je fasse la distinction entre ce que je veux comme valeur générale ou spécifique, il y a surement des variables que je n'ai pas besoin de garder comme ça entre deux scènes en y réfléchissant mieux, ce qui optimisera la mémoire au passage (pour si peu ^^)


    Tu m'as donné matière à réfléchir en tout cas, merci


    edit: je passe en résolu
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Vxi3] Agrégation : bonnes pratiques pour cumuler des valeurs ?
    Par fprovot dans le forum Designer
    Réponses: 0
    Dernier message: 25/07/2013, 19h34
  2. Réponses: 3
    Dernier message: 11/06/2012, 20h19
  3. Réponses: 4
    Dernier message: 19/05/2012, 12h49
  4. Réponses: 10
    Dernier message: 04/09/2009, 15h06
  5. Réponses: 5
    Dernier message: 08/06/2009, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo