Menu
CoddyTech

Mostrare e nascondere

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 34 di 67.

SetActive(false) disattiva un intero GameObject: non viene disegnato, non collide più, gli script su di esso smettono di ricevere Update() e anche i suoi figli vengono disattivati. SetActive(true) riattiva tutto, mentre activeSelf indica se è attivo. Questo script, associato a un pulsante, nasconde la porta nel suo campo door quando si fa clic con il mouse:

public GameObject door;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        door.SetActive(false);
    }
}

Uno script che nasconde il proprio oggetto con gameObject.SetActive(false) non può riattivarlo, perché il suo Update() non viene più eseguito. Quindi l'interruttore si trova su un altro oggetto, che ha un riferimento a quello che mostra e nasconde.

enabled disattiva un singolo componente e lascia invariato il resto dell'oggetto. GetComponent<Renderer>().enabled = false rende invisibile un oggetto, ma il suo collider continua a bloccare le cose: un muro invisibile. Uno script con enabled = false non riceve più chiamate a Update(), ma l'oggetto resta nella scena, ancora disegnato e ancora in collisione, e gli altri componenti continuano a funzionare.

challenge icon

Sfida

Medio

Lo script della leva contiene il ponte nel suo campo bridge. Fai in modo che Space controlli il ponte: la prima pressione lo nasconde, la successiva lo fa riapparire, e così via, un cambio a ogni pressione.

Nascondi l’intero ponte, collider compreso, così nessuno può stare su un ponte che non c’è.

Premi Play, premi Space qualche volta, poi Check.

Provalo tu

using UnityEngine;

public class BridgeSwitch : MonoBehaviour
{
    public GameObject bridge;

    void Update()
    {
        // Space nasconde il ponte e, alla pressione successiva, lo mostra di nuovo
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di scripting in Unity