[RESOLU] Problème avec les toggles (cases à cocher) ?

Questions à propos du GUI, y compris la partie script.
Molgy
Messages : 26
Inscription : 12 Mai 2016 04:01

Re: Problème avec les toggles (cases à cocher) ?

Message par Molgy » 24 Nov 2016 17:20

Hello,

Pour répondre à :
aclanto a écrit : Je pense que le problème est que Done_PlayerController.t ne prend pas la valeur de
GetComponent<Toggle>().isOn. Même si Done_PlayerController.t devrait normalement prendre cette valeur avec le "=" d'affectation.

Il se peut que le script n'a pas accès à GetComponent<Toggle>().isOn.
Qu'en pense-tu ?
Il faut que le script soit sur le même objet qui contient le component Toggle. Après je ne l'ai pas mis car ça me semble "Obvious" mais il faut que le méthode soit dans une class de type monobehaviour, avec les using UnityEngine etc, si tu as juste copié le script tel quel ça ne marchera pas.

Peux-tu envoyer les erreurs que tu obtiens si ça ne fonctionne pas?

Cordialement,

Molgy
T'entraîner tu devras, :!:
Tester tu feras, :?:
Réussite tu auras. 8-)
-- Dayo ! :merci:

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: [RESOLU] Problème avec les toggles (cases à cocher) ?

Message par aclanto » 25 Nov 2016 12:33

Bonjour Molgy, :hello:

Je te remercie beaucoup de m'avoir permis de résoudre mon problème ! :super:

En fait j'avais commis une erreur, au lieu d'affecter mon script à mon Toggle, je l'ai affecté à mon Canvas qui me sert de menu "pause" et qui contient donc mon Toggle plus quelques boutons.

Je tiens à préciser pour ceux qui sont débutant comme moi, qu'il faut aussi mettre le premier paramètre du
"On Value Changed (boolean)" soit sur "Editor And Runtime" soit sur "RunTime Only".

Merci encore Molgy, je suis bien content avoir régler ce problème. ::d

Je souhaite une excellente journée ! :hello:

Bien cordialement.

Aclanto
Dernière édition par aclanto le 25 Nov 2016 13:08, édité 1 fois.

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: Problème avec les toggles (cases à cocher) ?

Message par aclanto » 25 Nov 2016 13:06

Bonjour Moi 1971, :hello:

Je t'ai répondu le 14/11.

Pour rappel voici cette réponse :
aclanto a écrit : "Done coche" accède aux booléen t car t est précéder de "Done_PlayerController." donc "Done coche" sait qu'il faut modifier t dans le fichier "Done_PlayerController" en fonction de la valeur du booléen "bt_value" qui devrait égale à "is On", un booléen d'Unity qui permet de détecter si le Toggle est coché ou non.

J'ai mis t en "static" pour que t puisse garder en mémoire l'état que utilisateur lui à donner en cochant ou décochant le toggle. Car il se pourrait que t change de valeur si par exemple le script "Done_PlayerController" se rechargé.
Je te remercie d'avoir participé à cette discussion et pour tes conseils.

Je souhaite une bonne journée. :hello:

Bien cordialement.

Aclanto

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [RESOLU] Problème avec les toggles (cases à cocher) ?

Message par Moi 1971 » 25 Nov 2016 14:58

J'avais évidemment vu ta réponse. Mais il me semble que tout est "à côté" de la plaque"!
Tu utilises du code sans vraiment savoir pourquoi. Si ton code fonctionne comme tu le dis c'est temporaire, dés que tu vas le complexifier tu verras les limites de ta construction. De mon point de vu, tout est construit à l'envers. Pour moi c'est le toggle qui doit donner la valeur à t et non pas t qui donne la valeur au toggle. Rien que là y a un truc qui cloche. S'il faut faire une initialisation du toggle au départ, c'est pas le bon endroit.
J'ai mis t en "static" pour que t puisse garder en mémoire l'état que utilisateur lui à donner en cochant ou décochant le toggle
Cette phrase montre que tu ne comprends pas ce que tu fais. Il y a d'autres façons de faire. Mettre en static juste un booléen pour le garder en mémoire?!?....
Car il se pourrait que t change de valeur si par exemple le script "Done_PlayerController" se rechargé.
Voilà encore un problème lié à la construction de ton code. La valeur de "t" n'a pas a être codée en dur au démarrage, mais doit aller chercher sa valeur dans le toggle. Et si le toggle doit être initialisé avant, c'est dans un autre script (qui sera conservé en mémoire avec par exemple DontDestroyOnLoad...)
Bref, tu ne vas surement pas prendre en considération mes remarques. Tu vas continuer à coder à ta façon et c'est pas bien grave. ;-)

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: [RESOLU] Problème avec les toggles (cases à cocher) ?

Message par aclanto » 28 Nov 2016 02:00

Bonsoir Moi 1971, :hello:

J'ai mis t en static par sécurité d'une part pour être sûre qu' il soit gardé en mémoire et l'autre part pour être sûre que sa porté soit dans tout ce programme. Il me semble plus facile de mettre cette variable en static que passer par DontDestroyOnLoad. Pourquoi penses -tu qu'il est problématique de mettre t en static ?

Tu me dit qu'il faut que le toggle qui doit donner la valeur à t ; je le fais déjà en utilisant les mêmes principes qu'il y a dans le script de Molgy

Après, comme je l'ai déjà je suis un débutant sur Unity et c'est vrai, je peux avoir une mauvaise compréhension sur certains points et principes d'Unity. Et c'est justement pour cela que je pose des questions sur ce forum.

Moi 1971, je te remercie encore pour tout tes conseils.
Et je te souhaite une bonne soirée.

Bien cordialement. :hello:

David

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [RESOLU] Problème avec les toggles (cases à cocher) ?

Message par Moi 1971 » 28 Nov 2016 12:12

Bonjour,
Je ne sais pas si cela sert à quelque chose... mais bon :
J'ai mis t en static par sécurité d'une part pour être sûre qu' il soit gardé en mémoire
Faux.. ça ne sert pas à ça!.. En public, en private ou protected il serait tout autant gradé en mémoire!
pour être sûre que sa porté soit dans tout ce programme.
Faux... sa porté est celle du script/fonction qui l'instancie... En public, la variable aurait la même portée.
Pourquoi penses -tu qu'il est problématique de mettre t en static ?
Parce que ça ne sert pas à ça la notion de static.
Pour ton exemple de Toggle, voici deux raisons qui me font dire que tu fais n'importe quoi.
1/ Ton Toggle est unique dans tout ton programme (programme = jeu en entier, non pas fichier script). Sa valeur booléenne est donc unique dans tout ton programme. => La notion de valeur static n'a pas lieu d'être pour un objet qui est de toutes manières unique.
2/ Mettre sa valeur dans t ne sert à rien si ce n'est dupliquer une information. => Autant aller chercher directement la valeur du Toggle. Ou alors dupliquer l'information (donc mettre t) dans un fichier dédié à la gestion de l'interface/jeu. C'est un fichier généralement appelé "gameManager". "gameManager"est unique, donc jamais "dupliqué" et avec un "DontDestroyOnLoad" il persiste entre chaque scènes.
"DontDestroyOnLoad" est très facile à utilisé, il est là pour ça, il faut l'utiliser.
Ce sera ma dernière intervention sur ce sujet. Bon codage ;-)

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: [RESOLU] Problème avec les toggles (cases à cocher) ?

Message par aclanto » 29 Nov 2016 18:00

Bonjour Moi 1971, :hello:

Je te remercie pour ton message.

J'essayerai de programmer en ne mettant plus t en static.
Si je l'avais mis en static, c'est parce que j'avais fait un autre programme où j'ai eu des problèmes car je n'avais pas mis une variable en static. Donc même si ce n'est pas la même situation, j'ai préféré mettre t en static.

Je te remercie encore pour ta participation à cette discussion.

Je te souhaite une bonne soirée ainsi qu'une bonne continuation.

Bien cordialement. :hello:

Aclanto

Répondre

Revenir vers « L'interface GUI »