Page 1 sur 1

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

Publié : 16 Août 2022 13:52
par ika
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.

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

Publié : 16 Août 2022 13:53
par ika
Oublie.

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

Publié : 16 Août 2022 15:56
par boubouk50
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.

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

Publié : 17 Août 2022 18:33
par ika
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.

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

Publié : 17 Août 2022 22:17
par jmhoubre
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 () { }

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

Publié : 18 Août 2022 08:59
par boubouk50
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.