[DB - AL] Activer / désactiver avec SetActive

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
vertigo13
Messages : 7
Inscription : 18 Oct 2019 22:12

[DB - AL] Activer / désactiver avec SetActive

Message par vertigo13 » 30 Oct 2019 23:49

Bonjour,

j'essaie un script permettant de désactiver un objet en appuyant sur une touche, idem pour le désactiver.
Donc je suis dans la fonction update:

Code : Tout sélectionner

		
		
if (Input.GetKeyDown (KeyCode.H))
{
	gameObject.SetActive(false);
}
		
if (Input.GetKeyDown (KeyCode.N))
{
	gameObject.SetActive(true);
}
SetActive marche bien avec false, l'objet disparait, mais ne revient pas avec true.
Je ne sais pas si je me sers mal de SetActive ou s'il faut chercher une autre manière de faire.

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

Re: [DB - AL] Activer / désactiver avec SetActive

Message par Max » 30 Oct 2019 23:54

Bonsoir,

Là tu désactives le gameObject lui même, avec ses components, et donc le script.
Quand tu fais le gameObject.SetActive(false);, ton GO n'est plus actif et du coup le script non plus, donc aucune chance pour que tu puisses voir l'action sur la touche N produire quoique ce soit.
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

EmileF
Messages : 398
Inscription : 18 Mars 2017 19:39

Re: [DB - AL] Activer / désactiver avec SetActive

Message par EmileF » 31 Oct 2019 16:17

Salut

Si tu veux désactiver complètement l'objet, tu mets ton script sur un empty et ton objet à désactiver comme enfant de l'empty. Tu pourra ainsi activer ou désactiver ton objet comme tu voudras sans désactiver le script.

si tu ne veux que cacher le gameobject tu peux agir l'Enabled du composant <MeshRenderer> pour le rendre visible ou invisible sans désactiver le script
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « (C#) CSharp »