3
votes

Définition de la valeur déroulante en unité avec une chaîne

Est-ce que quelqu'un sait comment définir la valeur dropdownUI avec une chaîne à l'unité?
Je sais comment le configurer avec un int comme celui-ci

dropdown.value = "an Option";

Cependant, ce que je veux, c'est définir la valeur avec une chaîne donnée.

Quelque chose comme: p>

public DropDown dropdown;

dropdown.value = 1;


0 commentaires

3 Réponses :


0
votes

Cette réponse a été écrite en supposant que vous vouliez définir le texte d'un élément de liste déroulante. Car définir la valeur comme une chaîne est impossible, puisque la valeur est de type int . Consultez la réponse de derHugo pour savoir comment obtenir l'index à partir d'une option.


dropdown.value ne représente pas réellement le texte affiché. au lieu de valeur

est le numéro d'index de la sélection actuelle dans la liste déroulante. 0 est le première option dans la liste déroulante, 1 est la deuxième, et ainsi de suite.

Comme décrit dans la documentation ici

Ce que vous recherchez est Dropdown.itemText ( docs )

Ce qui signifie que pour définir le texte dans votre élément de liste déroulante, vous devrez effectuer les opérations suivantes: dropdown.itemText = "an Option";

Vous trouverez un guide plus complet sur le fonctionnement du menu déroulant dans le manuel Unity ici


2 commentaires

Vous êtes allé un peu plus vite alors voilà: vous pouvez utiliser dropdown.value = dropdown.options.IndexOf ("an Option")


Il semble que j'ai mal interprété la question, je pense que ce que vous venez de dire est en fait ce que le PO recherche. Vous devriez probablement en faire une réponse car elle semble plus correcte @derHugo



7
votes

Consultez la documentation de Dropdown.value :

valeur publique int;

La valeur est le numéro d'index de la sélection actuelle dans la liste déroulante. 0 est la première option de la liste déroulante, 1 est la seconde, et ainsi de suite.

il est de type int donc en bref: vous ne pouvez pas


Vous pourriez cependant obtenir l'index depuis le options disponibles lui-même en utilisant IndexOf :

dropdown.value = dropdown.options.FindIndex(option => option.text == "an Option");

vous pouvez également faire la même chose en une seule ligne en utilisant FindIndex

// returns a list of the text properties of the options
var listAvailableStrings = dropdown.options.Select(option => option.text).ToList();

// returns the index of the given string
dropdown.value = listAvailableStrings.IndexOf("an Option");


0 commentaires

1
votes

Nous ne pouvons pas ajouter de valeur de chaîne au champ de valeur de la liste déroulante. Donc, si vous avez besoin d'afficher une option ayant la chaîne donnée, utilisez l'option FindIndex pour trouver cette option dans la liste déroulante, puis attribuez cet index au champ de valeur.

dropdown.value = dropdown.options.FindIndex(option => options.text == "an Option");


1 commentaires

Oui comme je l'ai déjà mentionné dans cette réponse ;)