[RESOLU] bouton exit dans un environnement 3d

Questions à propos du GUI, y compris la partie script.
lauraneb
Messages : 30
Inscription : 01 Juin 2017 14:14

Re: un bouton exit dans un environnement 3d

Message par lauraneb » 07 Juin 2017 17:03

c'est vrai que le prefab a qui on peut donner des actions et le repeter ensuite c'est bien. mais c'est ce que j'ai compris apres avoir modeliser et mis en place tous mes éléments 3D. c'est une galerie en fps qui affiche des tableaux (sprites) et quand on clique dessus ça ouvre le canvas dans lequel il y a l'info et les actions possibles sur l'objet. et ce que tu decris est ce que j'essaye de faire...

mais reste que cette fonction exit ne marche pas bien que je passe par l'interface d'unity en mettant un setActive sur le bouton exitbutton ou en passant par le code.... il y a des fois ou quand je clique sur le bouton exit, le canvas se ferme bien (apparemment quand je suis bien en face) et des fois le bouton ne fait rien comme si la souris n'était pas réellement dessus (pourtant le bouton change bien de couleur).

or comme je n'ai jamais vu ce type de menu dans un fps, je me demande si il n'y a pas une bonne raison et si je n'essaye pas de faire ce que des beaucoup plus calés que moi n'ont pas fait. apparemment l'usage de la souris pour la selection ou le clic en mode fps reste problematique. ou est ce un probleme de priorité entre la 3d et la 2d du canvas mais meme en utilisant les filtres (blocking objects et blocking mask) du raycaster sur le canvas, ça ne change pas le probleme. ou alors c'est moi qui m'y prend carrement mal ;)
afficher l'info differente en fonction du sprite cliqué ne pose pas de probleme. par contre le clic sur les boutons contenus dans le menu reste aleatoire et je ne comprends pas pourquoi... ;

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

Re: un bouton exit dans un environnement 3d

Message par boubouk50 » 07 Juin 2017 17:33

Le clic souris, le raycast, 2D, 3D, tout fonctionne, ça a été fait et refait plein de fois.
Le problème doit venir d'ailleurs.
Ce que tu peux voir, c'est quel élément a été cliqué en dernier. Sélectionne le Event Manager (Je crois que c'est le nom) et regarde les infos qu'il te donne, tu y trouveras le dernier objet sélectionné, l'objet survolé par la souris, etc. Déjà tu pourras voir si tu cliques bien le bon objet.
"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

lauraneb
Messages : 30
Inscription : 01 Juin 2017 14:14

Re: un bouton exit dans un environnement 3d

Message par lauraneb » 07 Juin 2017 18:19

je viens de chercher partout dans l'interface de unity l'event manager jusqu'à ce que je realise que c'est une fonction à appeler dans le code c'est bien ça ?
en tout cas merci à Boubouk50 et à evereal pour l'aide

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: un bouton exit dans un environnement 3d

Message par Greg » 08 Juin 2017 01:53

Coucou,
boubouk parle de l'objet de ta scène avec un composant EventSystem. (je crois que c'est sur la main camera par défaut)

En le sélectionnant dans la hiérarchie de ta scène et en faisant tourner l'émulation tu dois avoir des infos dans l'inspecteur.

La taille du bouton est définit par l'objet avec le composant bouton. Si ton composant bouton est sur le texte enfant de ton bouton par exemple, seul le clique sur le texte sera pris en compte. Pareil si le bouton est dans un panel, le panel n'activera pas, il faudrait lui mettre le composant bouton. Peut-être est-ce ton problème...
Sinon, peut-être qu'agrandir ton bouton pour les tests te donnera une meilleure idée des zones 'cliquables'.

:merci:
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

lauraneb
Messages : 30
Inscription : 01 Juin 2017 14:14

Re: un bouton exit dans un environnement 3d

Message par lauraneb » 08 Juin 2017 17:49

oui alors du coup comme la fenetre était entierement en bas, j'en avais oublié la présence et l'utilité.
mon event system est sur le fpscontroler
donc quand je clique sur le bouton c'est bien le bouton "exitButton" qui est cliqué mais le code de la fermeture du canvas ne semble pas s'executer puisque le Debug.Log que j'y ai placé ne s'affiche pas non plus. j'ai réessayé aussi en en faisant un GameObjet setvalue sur le canvas au onClick du bouton. et ça ne marche pas non plus. Bizarre car hier il me semblait que ça marchait par intermittence.
je crois que le probleme peut venir de là

Code : Tout sélectionner

Button btn = exitButton.GetComponent<Button>();
        btn.onClick.AddListener(ExitCanvas);
        
puisque dans mon ExitCanvas ne s'execute pas du tout que je l'ecrive avec E ou un e.

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

Re: un bouton exit dans un environnement 3d

Message par boubouk50 » 08 Juin 2017 18:16

ExitCanvas est le nom de la fonction à appeler, il faut donc que les orthographes coïncident.
"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

lauraneb
Messages : 30
Inscription : 01 Juin 2017 14:14

Re: un bouton exit dans un environnement 3d

Message par lauraneb » 08 Juin 2017 19:01

oui j'avais bien compris ça mais je me suis dit que si le fait d'avoir E majuscule au nom de la methode rentrait en conflit...

Code : Tout sélectionner

void ExitCanvas()
    {
        Debug.Log("CLOSE THE CANVAS");
        canvas.SetActive(false);
        Cursor.lockState = CursorLockMode.Locked;
    }
j'ai refait un tour complet des possibilités :
sans le code mais en utilisant les fontions du onClick du bouton exitButton dans l'interface d'unity
Image
avec le boul coché ou non, dans les deux cas le bouton exitButton est totalement inactif meme si le cursor est bien sur le bouton et que l'inspector me dit que le bouton a été selectionné.
j'ai enlevé ensuite le onClick du bouton et j'ai lié mon code aux objets cliquables.
j'ai liés les variables canvas et exitbutton à leur objet respectif
je n'ai aucun resultat (meme pas le debug.log) meme si l'inspector me dit que le bouton a bien été selectionné

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: un bouton exit dans un environnement 3d

Message par Greg » 08 Juin 2017 22:01

Coucou,
c'est un bouton 'fait main' ou ajouter par Menu > GameObject > Ui > Button ?
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

lauraneb
Messages : 30
Inscription : 01 Juin 2017 14:14

Re: un bouton exit dans un environnement 3d

Message par lauraneb » 09 Juin 2017 09:13

oulà j'en suis pas encore à creer mes propres boutons ;)
c'est un bouton unity Ui.
ce qui m'interpelle c'est que le onClic du bouton dans unity ne fonctionne pas non plus, alors que le bouton est bien selectionné au clic selon la console de l'inspector.
l'activation du canvas se fait bien sur le sprite avec onMouseDown. par contre la desactivation du canvas sur un bouton onClick ne se fait pas. le bouton est placé dans un panel qui est lui meme dans un empty "Menu" qui est positionné dans le canvas.

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

Re: un bouton exit dans un environnement 3d

Message par boubouk50 » 09 Juin 2017 09:45

Une chose est certaine, les boutons fonctionnent correctement. Donc ce doit être un problème de conception.
Crée une nouvelle scène vide avec juste un canvas + panel + bouton On et Bouton Off, pour afficher et masquer un, gameObject dans la scène, et teste là. Ça devrait marcher.

En écrivant cela, question: sur ton image, ton bouton active le canvas. S'il est déjà activé alors rien ne se passera, c'est normal. Ce n'est pas un switch ON/OFF mais un bouton qui ne fait qu'une seule chose: ce qui est dans son OnClick. Donc ici, il active. Pour avoir un bouton ON/OFF, il te faut passer par un script qui le fait ou bien superposer deux boutons, chacun se masquera et affichera l'autre bouton en plus de sa fonction.
"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 « L'interface GUI »