Mostrare e nascondere
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 48 di 85.
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, e activeSelf indica se è attivo. Questo script su un pulsante nasconde la porta indicata 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 contiene un riferimento a quello che mostra e nasconde.
enabled disattiva un 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 rimane nella scena, ancora disegnato e ancora in collisione, e gli altri componenti continuano a funzionare.
Sfida
MedioFai in modo che la barra spaziatrice nasconda il ponte e lo faccia riapparire.
- In
Update(), quando viene premutoInput.GetKeyDown(KeyCode.Space), chiamabridge.SetActive(...)per attivare o disattivare l'intero ponte, collider compreso. - Passa lo stato opposto:
bridge.SetActive(!bridge.activeSelf);.
Premi «Gioca» e premi la barra spaziatrice alcune volte: il ponte scompare e riappare. Poi premi «Verifica».
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
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity