Problème d'appelle de variable (débutant)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
ika
Messages : 3
Inscription : 16 Août 2022 13:25

Problème d'appelle de variable (débutant)

Message par ika » 16 Août 2022 13:52

Bonjours je suis sur Unity 2020.3.25f1 et j'ai rencontrer ce que je pense peut être être un "bug".
Ce bug est trés simple ma condition ne fonctionne pas.

Code : Tout sélectionner

public void upgrade1()
    {

        if(systeme.Score >= systeme.Upgrade1Price )   
     {
        systeme.Score -= systeme.Upgrade1Price;
        systeme.Upgrade1 = true;
     }
    }
J'ai l'impression qu'elle n'es pas capable d'aller vérifier ou de comparer 2 variable compris dans un autre scripte.
J'ai trouver comment contourner le problème je me demande juste pourquoi le Programme n'es pas capable de cella.

Unity ne me communique aucune erreur de script mon bouton refuse juste d'exécuter la Void.
Pièces jointes
Capture1.PNG
Capture1.PNG (21.71 Kio) Consulté 640 fois

ika
Messages : 3
Inscription : 16 Août 2022 13:25

Re: Problème d'appelle de variable (débutant)

Message par ika » 16 Août 2022 13:53

Oublie.
Pièces jointes
Capture.PNG
Capture.PNG (16.44 Kio) Consulté 639 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5835
Inscription : 28 Avr 2014 11:57
Localisation : Allériot (71)

Re: Problème d'appelle de variable (débutant)

Message par boubouk50 » 16 Août 2022 15:56

J'ai rien compris au pb.
Mais surtout, "Oublie" quoi?
Tu as plus de problème > Supprime ton thread
L'image jointe n'est pas la bonne > Supprime là
Etc.
Plus tu es précis, plus tu expliques justement plus on te répondra justement.
Là, l'explication est dans ta tête, faut nous expliquer.
"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

ika
Messages : 3
Inscription : 16 Août 2022 13:25

Re: Problème d'appelle de variable (débutant)

Message par ika » 17 Août 2022 18:33

J'ai trouver comment contourner le problème mais j'aimerais quand même comprendre d'où il vient.
L'oublie es un oublie du 2 éme screen permettant d'avoir la totalité du système.
Et le problème que je vais tenter de reformuler est que lorsque j'appuis sur un bouton au quelle j'ai au préalable associer la void upgrade1 elle ne fait pas convenablement la vérification. Et par pas convenablement je veux dire qu'elle ne détecte jamais systeme.score >= systeme.upgrade1Price , alors que la valeur de systeme.score est supérieur.
Et même si j'ai trouver comment contourner le problème je suis quand même curieux de comprendre pourquoi ce problème subsiste.

Avatar de l’utilisateur
jmhoubre
Messages : 690
Inscription : 05 Oct 2019 22:05

Re: Problème d'appelle de variable (débutant)

Message par jmhoubre » 17 Août 2022 22:17

Bonsoir,

la méthode la plus utile quand on débute est Debug.Log : elle permet d'afficher quelque chose dans la console.

Par exemple :
- pour être sur que le bouton déclenche upgrade1 (), mettre au début de cette méthode :

Code : Tout sélectionner

	Debug.Log("upgrade1 exécutée.").
- pour savoir ce que fait upgrade1 (), ajouter après le 1er Debug :

Code : Tout sélectionner

	Debug.Log("Score : " + systeme.score + "  UpgradePrice : " + systeme.UpgradePrice);
ce qui affiche l'état des deux variables de la condition quand upgrade1 est exécutée.

Tu devrais avoir une meilleure idée de ce qui se passe.

Un petit conseil : il existe des conventions de nommage, qui permettent d'échanger plus facilement avec les autres. Le C# est d'origine Microsoft, dont les conventions sont assez suivies (voir la doc). Par exemple, les méthodes, les propriétés commencent par une majuscule. Les variables commencent par une minuscule.

Code : Tout sélectionner

	public void Click () { }

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5835
Inscription : 28 Avr 2014 11:57
Localisation : Allériot (71)

Re: Problème d'appelle de variable (débutant)

Message par boubouk50 » 18 Août 2022 08:59

De ce que je comprends du code:
A l'initialisation :
* Upgrade1 = false -> Le Score ne se met pas à jour par l'Update donc il ne s'incrémente pas tout seul.
* Click1 () -> Score gagne 1 quand cette fonction est activée
Il faut donc au moins X appels à Click1 () pour arriver à la valeur d'Upgrade1Price (10 par défaut mais il a pu changer)
Une fois ces X appels effectués, alors tu peux appeler upgrade1 () et la condition sera validée.
Alors Score se verra retrancher Upgrade1Price, Upgrade1 passera à True et Score sera enfin incrémenté de autoClickPerSeconde à chaque frame (et pas chaque seconde > donc 60 fois à 60 FPS) dans l'Update.
"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

Répondre

Revenir vers « Scripting »