Activer désactiver GameObject

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
pleiode
Messages : 11
Inscription : 12 Juil 2019 10:59

Activer désactiver GameObject

Message par pleiode » 12 Juil 2019 11:01

Bonjour !

Je suis débutant sur Unity et je voudrais créer quelques choses de simple, Activer et désactiver un GameObject avec un même bouton, mais je n'y arrive pas... J'ai essayé plusieurs choses !

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: Activer désactiver GameObject

Message par DevAmat » 12 Juil 2019 11:33

Bonjour,

Il y a pas mal d'exemple sur le net.

Je te mets deux liens officiels:
https://unity3d.com/fr/learn/tutorials/ ... ameobjects
https://docs.unity3d.com/2018.1/Documen ... ctive.html

Un lien youtube:
https://www.youtube.com/watch?v=OUlXD2bf8FU

Dans la fonction Public appelée par ton bouton, tu peux vérifier l'état de ton GameObject. Et donc inverser son état grâce à un bool.
Le script est à mettre dans ton GameObject. Et tu dois drag and drop le GameObject sur le Bouton (La fonction est en public pour pouvoir y avoir accès de l'extérieur).

Code : Tout sélectionner

public void ChangeState()
    {
        if (true == gameObject.activeInHierarchy)
        {
            gameObject.SetActive(false);
        }
        else if (false == gameObject.activeInHierarchy)
        {
            gameObject.SetActive(true);
        }

        // gameObject.SetActive(!gameObject.activeInHierarchy);
    }
La dernière ligne de script (celle en commentaire), peut remplacer toutes les autres avant mais si tu ne la comprends pas ne l'utilise pas.

Ce que tu demandes est assez basique et facile à trouver avec un minimum de recherche.
Si tu es totalement débutant essaye de faire un apprentissage pas-à-pas..
:super:

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

Re: Activer désactiver GameObject

Message par boubouk50 » 12 Juil 2019 12:05

Je rebondis juste sur le code de DevAmat qui a bien détaillé l'algo.
Un if/else est une condition qui, si elle est vérifiée, entre dans la première partie, la deuxième sinon:

Code : Tout sélectionner

if (mon gameobject est-il actif?) {
	//oui -> Alors ce bout va s'exécuter}
else  {
	//non -> Alors ce bout va s'exécuter}
Ainsi, le else est la condition inverse du if. Il devient alors redondant de le préciser comme dans l'exemple de DevAmat. Cela donnerait:

Code : Tout sélectionner

public void ChangeState()
    {
        if (true == gameObject.activeInHierarchy) //Si l'objet est actif
        {
            gameObject.SetActive(false);	//alors on le désactive
        }
        else  //Sinon (donc il est inactif)
        {
            gameObject.SetActive(true); //alors on l'active
        }
    }
C'est juste l'intermédiaire entre le code et la ligne en commentaire qui raccourcit tout.
"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

pleiode
Messages : 11
Inscription : 12 Juil 2019 10:59

Re: Activer désactiver GameObject

Message par pleiode » 14 Juil 2019 15:28

Nickel,
Ca marche parfaitement, merci !

Verrouillé

Revenir vers « Scripting »