Catégories
Unity

Faire apparaître / disparaître un objet

Cet article explique comment faire apparaître ou disparaître un objet dans Unity

Disparaître

Il y a plusieurs moyens de faire disparaître un objet.

Détruire l’objet

Cette méthode est définitive. A utiliser si l’objet ne doit pas réapparaître plus tard.

A noter que lorsque l’objet est détruit, tous ses composants sont aussi supprimés. Par exemple, si un composant Audio Source est en train de jouer, le son va s’arrêter.

    private void OnMouseDown()
    {
            Destroy(gameObject);
    }

Désactiver l’objet

En désactivant l’objet, tous ses composants deviennent inactifs.

Le composant qui s’occupe du rendu visuel (un Renderer) va donc s’arrêter et l’objet ne s’affiche plus.

Cette méthode permet de réactiver l’objet plus tard. En contrepartie, il occupe de la place en mémoire. Sa réactivation ultérieure sera plus rapide que la création d’un nouvel objet.

    private void OnMouseDown()
    {
        gameObject.SetActive(false);
    }

Désactiver le composant de rendu (Render)

En désactivant le Renderer, l’objet n’apparaît plus.

Les autres composants continuent à fonctionner. Par exemple, un son peut continuer à se jouer et on peut toujours cliquer sur l’objet, même si on ne le voit plus.

    private void OnMouseDown()
    {
        // Désactive n'importe quel type de Renderer
        GetComponent<Renderer>().enabled = false;
    }

Faire apparaître un objet

Il y a plusieurs moyens de faire apparaître un objet.

Il est aussi possible de créer un objet à partir d’un Prefab (TODO), ce cas n’est pas traité ici.

Réactiver l’objet

Il est nécessaire d’avoir une référence sur l’objet à faire apparaître. Par exemple en l’ayant configuré dans une propriété avec l’inspecteur. Dans cet exemple, l’objet configuré dans objectToShow pourrait être désactivé par défaut et s’activer quand on clique sur celui a un script avec ce code:

    public GameObject objectToShow;

    private void OnMouseDown()
    {
        if (objectToShow != null) {
            objectToShow.SetActive(true);
        }
    }

Réactiver le Renderer

Il est nécessaire d’avoir une référence sur l’objet à faire apparaître. Par exemple en l’ayant configuré dans une propriété avec l’inspecteur. Dans cet exemple, le Renderer de l’objet configuré dans objectToShow pourrait être désactivé par défaut et s’activer quand on clique sur celui a un script avec ce code:

    public GameObject objectToShow;

    private void OnMouseDown()
    {
        if (objectToShow != null) {
            objectToShow.GetComponent<Renderer>().enabled = true;
        }
    }