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..
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 !