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)
[Résolu] Button - SpriteSwap
-
JollyStone
- Messages : 38
- Inscription : 03 Avr 2019 15:09
- Localisation : Liège (B)
- Contact :
[Résolu] Button - SpriteSwap
Dernière édition par JollyStone le 26 Mai 2025 12:00, édité 1 fois.
- boubouk50
- ModoGenereux

- Messages : 6447
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Button - SpriteSwap
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.
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
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
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 :
Remplacer le composant « Button » d’origine par ce script et ça fonctionne.
Merci et bonne journée !
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;
}
}Merci et bonne journée !
- boubouk50
- ModoGenereux

- Messages : 6447
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [Résolu] Button - SpriteSwap
Si tu ne veux pas qu'il soit Selected, tu peux aussi mettre la navigation à None, il me semble.
À tester.
À 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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation