Afficher masquer un sous menu

Créer et afficher vos UI, widgets blueprint, menu in game, et paramètrage des inputs et controllers
Avatar de l’utilisateur
pio_killer
Messages : 27
Inscription : 04 oct. 2023, 07:43

Bonjour à tous :D

Il y a un truc que j'ai du mal à comprendre. Je suis sur UE5

J'ai un widget blueprint qui s'affiche grace à la classe HUD dans le game mode qui se charge avec le level.

En voulant comprendre comment s'articule tout ça, je vouslais faire un sous-menu qui s'ouvrirait lors de l’appui sur une touche (clavier ou manette peu importe) et le jeu sera mit en pause.

Dans ce sous menu il y a un bouton Resume pour revenir au jeu et enlever la pause.

Si le sous menu est dans le même widget principal, il n'y a pas de problème pour afficher/masquer.

Mais je voudrais avoir 2 widgets distincs. C'est plus confortable pour la création.

Cela fonctionne bien. L'appui sur bouton ouvre le sous menu et met le jeu en pause.

Mais je voudrais pouvoir fermer le sous-menu en rappuyant sur la même touche qui a servit à l'ouvrir et là ça ne marche pas.
Rien ne se passe.
J'ai testé en mettant set input mode game and ui et c'est pareil.
Tout se passe comme si l'input action qui a affiché le sous menu était occupé par autre chose et donc est inaccessible.

Est-ce que quelqu'un a déjà eu ce problème ou saurait me conseiller ?

Merci d'avance ?
Avatar de l’utilisateur
pio_killer
Messages : 27
Inscription : 04 oct. 2023, 07:43

Bon... j'ai trouvé je pense la solution ici :

https://forums.unrealengine.com/t/close ... /485710/10

En tout cas ça fonctionne avec une touche clavier c'est un mieux ça.
Mais avec la touche de la manette ça veut toujours pas !!!
Ca détecte bien l'appuis sur la touche (j'ai vu avec un print string) mais ça ne le ferme pas !!!

J'aimerais quand même comprendre ce qu'il se passe concrètement. :roll:

La fonction override prend le dessus sur tous les autre événement c'est ça ?

Ce que je ne comprend pas c'est pourquoi unreal n'arrive pas à gérer ce cas là ?
Je me demande ça car je me dit soit il n'est programmé pour, soit je m'y prend mal.

Donc si quelqu'un saurait m'expliquer ce qu'il se passe dans ce cas là ...

Merci d'avance :o
Avatar de l’utilisateur
pio_killer
Messages : 27
Inscription : 04 oct. 2023, 07:43

Bon ... j'ai trouvé.

En fait ça ne marche de la même façon car les input action passent par le sytème d'input d'unreal engine et les Key events sont directement reliés à la capture des touches.

Et mon problème venait tout simplement parceque je n'avais pas coché "Trigger when Paused " dans l'input Action. J'ai pourtant regardé mais il y en a tellement que les yeux s'embrouillent :D .
Trigger Whend Paused.png
Trigger Whend Paused.png (25.32 Kio) Consulté 1118 fois

Au cas où ça servirait à un débutant comme moi voici la fonction que j'ai mise dans le Widget sous-menu
Il faut créer une variable Widget en input et en local Var_Widget et elles ont forcément le type User Widget

-
Fonction Show Menu.jpg
Fonction Show Menu.jpg (167.38 Kio) Consulté 1118 fois
-



Et dans le player controller, je l'appelle comme ça
Il faut mettre dans une variable le WBP du sous menu soit par un Cast soit autrement.
Pour ma part, je déclare tout dans le game instance et je récupère dans le begin play quand j'en ai besoin.

-
Call Show Menu.png
Call Show Menu.png (66.97 Kio) Consulté 1118 fois
-


Mais je vais surement mettre cette fonction dans une fonction library comme ça je pourrais l'utiliser sur n'importe quel widget sans devoir copie la fonction

Point important, ça ne marche pas si on met "set input Mode UI only" dans le sous menu !!!
Avatar de l’utilisateur
Colonel
Messages : 158
Inscription : 20 oct. 2022, 12:22

Salut Pio,

J'avais vu ton message car j'ai eu le même problème il y a longtemps mais je ne me souvenais plus comment j'avais fait :?

Quand j'ai vu le "Trigger when paused" ça m'est revenu direct :lol:
Répondre