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;
}
}