Menu
CoddyTech

Ein- und Ausblenden

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 48 von 85.

SetActive(false) schaltet ein ganzes GameObject aus: Es wird nicht gezeichnet, kollidiert nicht mehr, die Skripte darauf erhalten kein Update() 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 einer Schaltfläche blendet bei einem Mausklick die Tür in seinem Feld door aus:

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 einschalten, weil Update() 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 andere Dinge: eine unsichtbare Wand. Ein Skript mit enabled = false erhält keine weiteren Update()-Aufrufe, aber das Objekt bleibt in der Szene, wird weiterhin gezeichnet und kollidiert weiterhin, und seine anderen Komponenten funktionieren weiterhin.

challenge icon

Aufgabe

Mittel

Lass die Leertaste die Brücke ausblenden und wieder einblenden.

  1. Rufe in Update() bei Input.GetKeyDown(KeyCode.Space) bridge.SetActive(...) auf, um die ganze Brücke samt Collider umzuschalten.
  2. Übergib den entgegengesetzten Zustand: bridge.SetActive(!bridge.activeSelf);.

Drücke „Spielen“ und drücke ein paar Mal die Leertaste: Die Brücke verschwindet und erscheint wieder. Klicke dann auf „Prüfen“.

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

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground