Page 1 sur 1

[DB-AL] afficher ou non une zone de texte

Publié : 08 Jan 2020 19:22
par sisir1980
Bonjour

Je suis novice +++ et j'ai un problème au démarrage j'arrive bien a rendre invisible une zone de texte mais impossible de la réafficher avec une condition
pour la désactiver

Code : Tout sélectionner

    void Start()
    {
                GameObject txtb = GameObject.Find("Text_B");
txtb.SetActive(false);
    }
  
et pour la réactivé j'ai fais ceci

Code : Tout sélectionner

public class test : MonoBehaviour
{
	
	public Text txt;
	public InputField myInputField;
	
    
   public void traitement()
    {
        txt.text="bonjour " + myInputField.text;
        if(myInputField.text>0){
        	 GameObject txtb = GameObject.Find("Text_B");
txtb.SetActive(true);
        }
    }


}
Pouvez vous m'aider?
cdt

Re: [DB-AL] afficher ou non une zone de texte

Publié : 08 Jan 2020 19:52
par Max
Bonsoir,

Comme le souligne la doc, tu ne peux pas trouver par le biais d'un GameObject.Find un GameObject qui est désactivé.
Donc quand tu écris GameObject txtb = GameObject.Find("Text_B"); alors que ton objet a été désactivé précédemment, il ne le trouvera pas.

Re: [DB-AL] afficher ou non une zone de texte

Publié : 08 Jan 2020 20:13
par sisir1980
Merci de ta réponse

mais alors comment faire ?? on doit bien pouvoir afficher ou non un texte suivant suivant des conditions ?

Re: [DB-AL] afficher ou non une zone de texte

Publié : 08 Jan 2020 20:17
par Max
sisir1980 a écrit :
08 Jan 2020 20:13
mais alors comment faire ?? on doit bien pouvoir afficher ou non un texte suivant suivant des conditions ?
Oui bien sûr.
Tu as plusieurs solutions. Par exemple garder en cache le GameObject concerné, plutôt que de passer systématiquement par un GameObject.Find(). Et donc faire un txtb.SetActivate(true/false); selon tes besoins.
Tu peux aussi jouer uniquement sur le component Text plutôt que de désactiver le GameObject dans son ensemble. Là tu peux activer ou désactiver le component à ta guise à partir du moment où tu connais son GameObject.
Tu peux aussi juste changer la valeur du Text.text, soit "" (vide), soit avec le texte souhaité.

Re: [DB-AL] afficher ou non une zone de texte

Publié : 08 Jan 2020 20:20
par Aelhan
Plutot que d'utiliser "GameObject.Find" essaie de voir pour le déclarer en variable (que tu renseignes dans l'inspecteur) ainsi qu'un booléen dont tu gères la valeur selon que ta chaîne soit vide ou non. Et pourquoi comparer un texte à 0 ?! Ca n'a pas vraiment de logique, compare le plutôt à une chaine vide

Re: [DB-AL] afficher ou non une zone de texte

Publié : 09 Jan 2020 09:11
par boubouk50
Pour savoir si une chaîne est vide, tu peux utiliser IsNullOrEmpty:

Code : Tout sélectionner

String.IsNullOrEmpty(myString)
https://docs.microsoft.com/fr-fr/dotnet ... mework-4.8