Page 1 sur 1

Activer désactiver GameObject

Publié : 12 Juil 2019 11:01
par pleiode
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 !

Re: Activer désactiver GameObject

Publié : 12 Juil 2019 11:33
par DevAmat
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:

Re: Activer désactiver GameObject

Publié : 12 Juil 2019 12:05
par boubouk50
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.

Re: Activer désactiver GameObject

Publié : 14 Juil 2019 15:28
par pleiode
Nickel,
Ca marche parfaitement, merci !