Ein- und Ausblenden
Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 34 von 67.
SetActive(false) schaltet ein ganzes GameObject aus: Es wird nicht dargestellt, kollidiert nicht mehr, die Skripte darauf erhalten keine Update()-Aufrufe mehr, und seine untergeordneten Objekte werden ebenfalls ausgeschaltet. SetActive(true) schaltet alles wieder ein, und activeSelf gibt an, ob es eingeschaltet ist. Dieses Skript auf einem Button blendet die Tür in seinem door-Feld aus, wenn mit der Maus geklickt wird:
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}Ein Skript, das sein eigenes Objekt mit gameObject.SetActive(false) ausblendet, kann es nicht wieder einblenden, weil Update() dann nicht mehr ausgeführt wird. Der Schalter befindet sich also auf einem anderen Objekt, das eine Referenz auf das Objekt hat, das es ein- und ausblendet.
enabled schaltet eine einzelne Komponente aus und lässt den Rest des Objekts unverändert. GetComponent<Renderer>().enabled = false macht ein Objekt unsichtbar, aber sein Collider blockiert weiterhin Dinge: eine unsichtbare Wand. Ein Skript mit enabled = false erhält keine weiteren Update()-Aufrufe, aber das Objekt bleibt in der Szene, wird weiterhin dargestellt und kollidiert weiterhin, und seine anderen Komponenten funktionieren weiterhin.
Aufgabe
MittelDas Skript des Hebels speichert die Brücke in seinem Feld bridge. Lass die Leertaste die Brücke steuern: Beim ersten Drücken wird sie ausgeblendet, beim nächsten Drücken erscheint sie wieder und so weiter, ein Umschalten pro Tastendruck.
Blende die gesamte Brücke aus, einschließlich des Colliders, damit niemand auf einer Brücke stehen kann, die nicht da ist.
Drücke Play, drücke ein paar Mal die Leertaste und dann Check.
Probier es selbst
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// Space blendet die Brücke aus, und beim nächsten Drücken wird sie wieder angezeigt
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen des Scripting in Unity
1Dein erstes Skript
Hallo, UnityPlatziere den WürfelBewege dich in jedem FrameDrehe dich jede SekundeSteuere mit den TastenRückblick: Steuere den Würfel4Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist ein StructRückblick: Drohnenpilot7Projekt: Fang den Stern
Der FängerEin fallender Stern10Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle Logger5Transformationen und Hierarchie
Eltern und KinderSkalierungDinge ansehenAuf einen Punkt zubewegenRückblick: Umlaufender Mond8Dinge finden
Nach Namen findenTagsNach Typ findenReferenzen schlagen FindUnitys NullRückblick: Nächste Münze11Projekt: Weiche den Blöcken aus
Der LäuferFallende Blöcke6GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter