Nom de script en variable ?

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Khamshinn
Messages : 3
Inscription : 18 Sep 2018 23:06

Nom de script en variable ?

Message par Khamshinn » 18 Sep 2018 23:18

Bonjour à tous !

Ceci est mon tout premier post sur ce forum. Je suis ému. :rouge:
Je commence tout juste à explorer Unity.

Je m'amusais à créer un petit jeu sans trop de problème. Jusqu'ici j'avais un petit Bonhomme qui affrontait une seule sorte d'ennemi, un gobelin. (Très original...). Ce gobelin est issu d'un préfab Gobelin que j'ai crée, auquel est relié un script (GobelinIA) dans laquelle est stockée son comportement (déplacement, point de vie...)

Jusqu'ici, pour détecter quel ennemi taper j'utilisais ce code dans le script de mon personnage :

Code : Tout sélectionner

GameObject.Find(ListeEnnemi[i].name).GetComponent<GobelinIA>().ModificationVie(1);
Ça marchait assez bien. Il y a une fonction ModificationVie qui modifiait la vie du gobelin ciblé, et quand ça tombait à zéro, il mourrait.
Sauf que : j'avais l'intention d'ajouter un second ennemi ! Avec son propre prefab et son propre script.
Du coup ma petite ligne de code devient obsolète.

Et là, je me casse les dents. Pas moyen de lui faire comprendre de quel script je parle vu que le script devient lui même une variable (GobelinIA ou AutretypedennemiIA)...
C'est possible de placer un nom de variable en référence ? Ou il y a des façons de faire beaucoup plus simple ?

Merci à tous et bonne soirée. :)
Khamshinn.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Nom de script en variable ?

Message par boubouk50 » 19 Sep 2018 09:05

Salut,

Je vois plusieurs façon de t'aider. La plus évidente serait de bien structurer ton code en créant plusieurs Components pour chacun de tes ennemis.
https://www.esprit-unity.fr/structurer- ... me-un-pro/
Par exemple, le système de vie, pour chacun de tes ennemis, reste le même. Tu peux donc créer une classe uniquement pour la vie (force, endurance, etc). En séparant par bloc, tu évites les redondances entre classe, et tu peux paramétrer comme bon te semble chaque ennemi. Qui plus, pour ton souci, tous les ennemis, quels qu'ils soient, auront le même Component que tu pourras appeler facilement.

Je te conseille aussi d'apprendre et de comprendre la notion d'héritage en POO.
Ça ne te donnera pas la solution directe, mais ça te donnera une méthode de structuration de code.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Khamshinn
Messages : 3
Inscription : 18 Sep 2018 23:06

Re: [RESOLU] Nom de script en variable ?

Message par Khamshinn » 19 Sep 2018 19:04

Merci beaucoup de ta réponse ! C'est super gentil !

Effectivement, j'essaie de me prendre des sessions où je réfléchis à ça et j'essaie de faire un peu de théorie. :)

Bonne fin de journée,
Khamshinn.

Répondre

Revenir vers « Scripting »