[Résolu] Button - SpriteSwap

Questions à propos du GUI, y compris la partie script.
JollyStone
Messages : 38
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)
Contact :

[Résolu] Button - SpriteSwap

Message par JollyStone » 22 Mai 2025 14:00

Bonjour,

Je cherche à personnaliser un bouton en utilisant la transition « Sprite Swap ».
J’ai donc créé 3 images différentes : la première pour l’état normal, la deuxième pour l’état survolé et la troisième pour l’état cliqué.
Un problème se pose : une fois que le bouton a été pressé, il passe automatiquement à l’état « Selected » et le survol ne fonctionne plus.
Y a-t-il un moyen de revenir à l’état normal après un clic pour que l’état survolé s’active à nouveau ?
(Unity 6)
Dernière édition par JollyStone le 26 Mai 2025 12:00, édité 1 fois.

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

Re: Button - SpriteSwap

Message par boubouk50 » 26 Mai 2025 09:38

C'est le comportement par défaut, hiérarchisé par niveau d'importance.
Un bouton Deselected prime sur Selected, qui prime sur Pressed, qui prime sur Highlighted, qui prime sur Normal.
Le comportement tel que tu le décris, a un défaut. Si le bouton redevient Highlighted, alors il n'est plus Selected. Dans ce cas, tu perds la sélection que tu as faite en appuyant dessus. Peut-être est-ce ce que tu souhaites.

Dans ce cas, il faut que tu réimplémentes les états du bouton avec l'Event Trigger.
PointerEnter pour le Highlight
PointerExit pour revenir à l'état Précédent (Code)
PointerDown pour Pressed
PointerUp (ou PointerClick) pour Selected

Ou bien tout en code, en héritant des interfaces IPointerHandler pour les modifier à ta convenance.
"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

JollyStone
Messages : 38
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)
Contact :

Re: Button - SpriteSwap

Message par JollyStone » 26 Mai 2025 11:59

Je crois que le problème est résolu…

J’avais d’abord repéré ces discussions mais sans trop comprendre :

https://discussions.unity.com/t/ui-butt ... ate/744177
https://discussions.unity.com/t/accessi ... ton/813674

Ensuite, avec l’aide de boubouk et d’une IA :

Code : Tout sélectionner

using UnityEngine.UI;
using UnityEngine.EventSystems;

public class BoutonCustom : Button

public override void OnPointerClick(PointerEventData evenData) 
	{
	base.OnPointerClick(evenData);
	interactable = false;
	interactable = true;
	}
}
Remplacer le composant « Button » d’origine par ce script et ça fonctionne.

Merci et bonne journée !

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

Re: [Résolu] Button - SpriteSwap

Message par boubouk50 » 26 Mai 2025 12:52

Si tu ne veux pas qu'il soit Selected, tu peux aussi mettre la navigation à None, il me semble.
À tester.
"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 »