[RESOLU][DB] Dropdown OnOptionClick()

Questions à propos du GUI, y compris la partie script.
Fasol0
Messages : 64
Inscription : 07 Avr 2015 11:43

[RESOLU][DB] Dropdown OnOptionClick()

Message par Fasol0 » 25 Jan 2018 20:01

Bonjour à tous,

je suis face à un problème qui ne m'a pas l'air très complexe mais auquel je n'arrive pas à trouver de solution simple et "propre".

j'utilise une Dropdown list (l'objet entier, pas seulement le script) pour définir la valeur d'un InputField (ailleurs dans la scène).
Cela fonctionne très bien, mais L'Event qui trigger cela est la modification de la valeur du dropdown (OnValueChanged). Or je souhaiterais pouvoir recliquer sur la même option de mon dropdown pour modifier mon text dans l'InputField.

Je cherche en fait à remplacer l'évenement OnValueChanged par défaut de ma dropdown par un genre de "OnOptionClick" qui fonctionnerait même lorsque l'on resélectionne la même option.

Je suis preneur de toute suggestion,

merci d'avance :)

Fasol0
Messages : 64
Inscription : 07 Avr 2015 11:43

Re: [DB] Dropdown OnOptionClick()

Message par Fasol0 » 26 Jan 2018 12:21

Bon j'ai trouvé ma réponse:

j'ai remarqué qu'il était possible de définir dropdown.value sur un indice qui ne pointe vers aucune option.
Si l'on a une liste à 5 elements (donc indice de 0 à 4), il est donc possible de définir dropdown.value = 5 par exemple.

Du coup, dans la méthode s'exécutant avec l'event OnValueChange du Dropdown, il suffit de redéfinir dropdown.value (à la fin de la méthode) sur une option qui n'existe pas pour qu'un clic sur une option déjà choisie par l'utilisateur soit interprété comme un changement de valeur.

Pour ceux que ça intéresse, je poste le code type de la méthode:

Code : Tout sélectionner

public InputField myInputField;
public Dropdown myDropdown;
//bool pour empêcher la réexécution de la méthode lorsque l'on target une option inexistante
bool lockMethod = false;
//Method appelée OnValueChanged du Dropdown
public void PickFromList()
    {
        if(lockMethod)
        {
            lockMethod = false;
            return;
        }
        string pickedValue = myDropdown.options[myDropdown.value].text;
        myInputField.text = pickedValue;

        //Empêcher le rappel de cette méthode en selectionnant une option inexistante
        lockMethod = true;
        myDropdown.value = myDropdown.options.Count;
    }

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

Re: [DB] Dropdown OnOptionClick()

Message par boubouk50 » 26 Jan 2018 12:54

Merci pour l'info.
N'oublie pas de passer le sujet en RESOLU.
"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 »