[RESOLU]Unity Héritage

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
EmileF
Messages : 678
Inscription : 18 Mars 2017 19:39

[RESOLU]Unity Héritage

Message par EmileF » 07 Avr 2020 11:58

Bonjour,

Voilà, je ne sais pas comment m'expliquer,
Dans mon jeu, j'ai différents défis, donc différents scripts (Defi1, Defi2, Defi3 etc);
Chaque défi est différencier par un type (Type1, type2, type3...
Mais Defi1 peut avoir le Type2 ou Type3 et Defi2 peut avoir le Type1 etc;
Dans un autre script je sélectionne au hasard un GameObject, contenant un script Defi.., et je ne sais pas comment je peux faire pour savoir de quel type est ce défi, car bien sûr le script qu'il contient a un nom différent, donc je ne peux pas savoir de quel script il s'agit.
J'ai vu la possibilité d'héritage, mais, selon moi, il se fait en sens inverse, on a une classe dans laquelle on peut avoir des classes différentes,
Moi je voudrais créer une classe MonoBehaviour (mes défis) qui hérite aussi d'une autre classe plus générale qui contiendrait le renseignement (Type et autres) que je pourrais appeler directement.

Est-ce que j'ai été assez clair ? Vos réponses me le dira
Dernière édition par EmileF le 07 Avr 2020 14:05, édité 1 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Unity Héritage

Message par djulio74 » 07 Avr 2020 12:45

Et pourquoi pas dans tes scripts défi avoir une void awake, qui renseigne au script qui choisis aléatoirement de quel type il est.

Sinon une méthode moins orthodoxe, avoir une donnée sur tes gameobject défi reconnaissable. Genre une valeur en position y. Tu tire un gameobject au hasard, recupere sa valeur position y, genre 0,001 ou 0,002 etc, de faible valeur pour pas ce soit visible. Une fois récupéré la valeur, x1000 et converti en int, qui te donne l'index du type stocké dans un Array du script qui choisis au hasard...

Sinon, les noms des gameobject défi à faire commencer par un nombre, que tu récupère aussi (première lettre du nom converti en int), et même histoire avec un Array stockant les type..

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

EmileF
Messages : 678
Inscription : 18 Mars 2017 19:39

Re: Unity Héritage

Message par EmileF » 07 Avr 2020 13:13

Merci Djulio pour ta réponse,

mais je pense que tu es à coté de mon problème.
Mon problème n'est pas d'attribuer un type à mon défi.
Mon problème c'est que chaque défi a un script de nom différent, il m'est donc difficile d'appeler ce défi pour savoir de quel type il est.

Tu parles plus loin de donner un index au nom du script pour savoir de quel type il est, ça peut-être une solution.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Unity Héritage

Message par djulio74 » 07 Avr 2020 13:36

Si si je pense avoir compris le soucis des noms de scripts différent pourtant, lol.
Si j'ai bien compris, une liste de gameobject, chacun à un script différent, donc de nom différent, et chacun de ces scripts défini un type de défi. Tu as un script qui tire au sort un de ce gameobject.

Pourquoi pas simplement utiliser les tag ? Tu choisis un gameobject au hasard, récupére son tag qui te donne son type de défi ?

Mais d'ailleurs comment tu fais pour lancer le défi en choisissant le gameobject si t'as pas accès à son script ?

Pourquoi pas dans chaque script défi avoir une void ontrigerEnter ? UN script À choisi un gameobject, quand il est choisis place un collider à sa position. Les script défi ayant une void ontrigerEnter reconnais qu'il a été choisis, il renseigne au script qui la choisis son type et lance le défi.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

EmileF
Messages : 678
Inscription : 18 Mars 2017 19:39

Re: Unity Héritage

Message par EmileF » 07 Avr 2020 14:05

Merci Djulio,
Oui, oui, tu as compris, tu es un as.
L'idée du tag aussi, est une excellente idée.
Mais d'ailleurs comment tu fais pour lancer le défi en choisissant le gameobject si t'as pas accès à son script ?
En fait, plusieurs gameobjets de défi, une sélection au hasard pour le jeu et une sélection au hasard aussi de différents codes pour ce défi mais bien sûr du type correspondant.

Mais je pense que je vais abandonner cette éventualité car trop consommatrice de mémoire pour l'ordi.

Mon idée était de créer plusieurs défis au même endroit pour le tirer au hasard mais avec des objets, des graphismes est tout le reste différents. Donc à chaque fois il y aurait tous les défis pour n'en utiliser qu'un seul soit s'il y a une vingtaine de défi autant d'objets pour n'en utiliser qu'un. Tant pis pour la variété dans les niveaux.

Je vais regarder pour instancier mes défis à partir de préfabs, dans ce cas, pas de problème de type.

en tout cas merci des idées que tu m'as donné ça me servira sûrement
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « Scripting »