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

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
sisir1980
Messages : 10
Inscription : 21 Jan 2018 22:21

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

Message par sisir1980 » 08 Jan 2020 19:22

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

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7922
Inscription : 30 Juil 2011 13:57

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

Message par Max » 08 Jan 2020 19:52

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.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

sisir1980
Messages : 10
Inscription : 21 Jan 2018 22:21

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

Message par sisir1980 » 08 Jan 2020 20:13

Merci de ta réponse

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

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7922
Inscription : 30 Juil 2011 13:57

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

Message par Max » 08 Jan 2020 20:17

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é.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Aelhan
Messages : 77
Inscription : 11 Déc 2019 23:00

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

Message par Aelhan » 08 Jan 2020 20:20

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
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5416
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

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

Message par boubouk50 » 09 Jan 2020 09:11

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
"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 « (C#) CSharp »