{"id":2883,"date":"2017-11-01T12:22:26","date_gmt":"2017-11-01T11:22:26","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=2883"},"modified":"2017-11-01T12:22:26","modified_gmt":"2017-11-01T11:22:26","slug":"comment-fermer-une-fenetre-dans-unity3d","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=2883","title":{"rendered":"Comment fermer une fen\u00eatre dans Unity3D ?"},"content":{"rendered":"<p>Aujourd&rsquo;hui nous allons essayer de fermer une fen\u00eatre ouverte dans Unity3D. Pour cela il faut une fen\u00eatre ouverte (panel) dans un Canvas.<\/p>\n<p><a href=\"http:\/\/www.unicoda.com\/?attachment_id=2910\" rel=\"attachment wp-att-2910\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2910\" src=\"https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Capture.png\" alt=\"\" width=\"1331\" height=\"309\" srcset=\"https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Capture.png 1331w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Capture-300x70.png 300w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Capture-768x178.png 768w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Capture-1024x238.png 1024w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Capture-1200x279.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>Probl\u00e9matique :<\/p>\n<ul>\n<li>Nous ne voulons pas fermer cette fen\u00eatre (InventoryWindows) d&rsquo;une quelconque mani\u00e8re mais en appuyant simplement en dehors de celle-ci.<\/li>\n<li>Il faut que la fermeture de la fen\u00eatre puisse s&rsquo;ex\u00e9cuter aussi sur mobile (soit sans curseur de souris).<\/li>\n<\/ul>\n<p>Dans un premier temps je n&rsquo;ai pas pens\u00e9 \u00e0 adapter cette fonctionnalit\u00e9 \u00e0 l&rsquo;utilisation d&rsquo;un \u00e9cran tactile. Or, mon premier r\u00e9flexe a \u00e9t\u00e9 d&rsquo;ajouter un contr\u00f4le sur un bool\u00e9en (mouseIsOut), si mouseIsOut vrai alors fermer la fen\u00eatre, sinon ne rien faire. J&rsquo;ai mis le tout dans la fonction LateUpdate() de la classe d\u00e9finissant la gestion de ma fen\u00eatre. Quand la souris sors du Panel (Event Trigger &#8211;\u00a0 PointerOut) alors on met mouseIsOut \u00e0 vrai. Au contraire, \u00e0 l&rsquo;ouverture du panel ou l&rsquo;entr\u00e9e de la souris dans le panel on met mouseIsOut \u00e0 faux.<\/p>\n<p>Avec cette m\u00e9thode qui marche tr\u00e8s bien sur PC on rencontre bien vite un probl\u00e8me quand on passe sur un \u00e9cran tactile. En effet, l&rsquo;\u00e9cran tactile ne consid\u00e8re pas de curseur tant que notre doit n&rsquo;est pas en contact avec la surface. On ne peut donc pas d\u00e9tecter la sortie du curseur du Panel \u00e0 l&rsquo;aide de l&rsquo;Event Trigger en mode PointerExit&#8230; (Sauf si l&rsquo;utilisateur d\u00e9place son doigt sans le lever de l&rsquo;int\u00e9rieur \u00e0 l&rsquo;ext\u00e9rieur du panel.<\/p>\n<p>Recherche d&rsquo;une autre solution :<\/p>\n<p>Pour palier \u00e0 ce probl\u00e8me j&rsquo;ai trouv\u00e9 une solution facile \u00e0 mettre en \u0153uvre.<\/p>\n<ul>\n<li>Faire d&rsquo;un panel un bouton quitter g\u00e9ant et situ\u00e9 \u00e0 l&rsquo;arri\u00e8re de notre fen\u00eatre.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.unicoda.com\/?attachment_id=2911\" rel=\"attachment wp-att-2911\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2911\" src=\"https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Sans-titre.png\" alt=\"\" width=\"1919\" height=\"595\" srcset=\"https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Sans-titre.png 1919w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Sans-titre-300x93.png 300w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Sans-titre-768x238.png 768w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Sans-titre-1024x317.png 1024w, https:\/\/www.unicoda.com\/wp-content\/uploads\/2017\/11\/Sans-titre-1200x372.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>En bleu (\u00e9cran + objet actif) vous pouvez voir le panel sur lequel j&rsquo;ai ajout\u00e9 un Event Trigger et le script permettant de mettre mouseIsOut \u00e0 True si il y a d\u00e9tection de clic sur ce panel.<\/p>\n<p>Il vous suffit alors de mettre mouseIsOut \u00e0 false quand vous ouvrez la fen\u00eatre (ici l&rsquo;inventaire) et le tour est jou\u00e9.<\/p>\n<p>Note : vous pouvez aussi d\u00e9tecter si votre fen\u00eatre est active (isActive = true) pour \u00e9conomiser l&rsquo;utilisation d&rsquo;un bool\u00e9en.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aujourd&rsquo;hui nous allons essayer de fermer une fen\u00eatre ouverte dans Unity3D. Pour cela il faut une fen\u00eatre ouverte (panel) dans un Canvas. Probl\u00e9matique : Nous ne voulons pas fermer cette fen\u00eatre (InventoryWindows) d&rsquo;une quelconque mani\u00e8re mais en appuyant simplement en dehors de celle-ci. Il faut que la fermeture de la fen\u00eatre puisse s&rsquo;ex\u00e9cuter aussi sur &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=2883\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Comment fermer une fen\u00eatre dans Unity3D ?&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,289],"tags":[343,342,338,341,339,340],"class_list":["post-2883","post","type-post","status-publish","format-standard","hentry","category-info","category-unity3d","tag-fenetre","tag-fermer","tag-informatique","tag-ui","tag-unity","tag-unity3d"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/2883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2883"}],"version-history":[{"count":2,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/2883\/revisions"}],"predecessor-version":[{"id":2913,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/2883\/revisions\/2913"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}