Menu
CoddyTech

Pokazywanie i ukrywanie

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 34 z 67.

SetActive(false) wyłącza cały obiekt GameObject: nie jest rysowany, przestaje kolidować, jego skrypty przestają otrzymywać wywołania Update(), a jego elementy podrzędne również są wyłączane. SetActive(true) przywraca wszystko, a activeSelf informuje, czy obiekt jest włączony. Ten skrypt na przycisku ukrywa drzwi wskazane w polu door po kliknięciu myszą:

public GameObject door;

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

Skrypt, który ukrywa własny obiekt za pomocą gameObject.SetActive(false), nie może go ponownie włączyć, ponieważ jego Update() przestaje działać. Dlatego przełącznik znajduje się na innym obiekcie, który przechowuje referencję do obiektu, który pokazuje i ukrywa.

enabled wyłącza jeden komponent, pozostawiając resztę obiektu bez zmian. GetComponent<Renderer>().enabled = false sprawia, że obiekt staje się niewidoczny, ale jego collider nadal blokuje inne obiekty: to niewidzialna ściana. Skrypt z enabled = false nie otrzymuje już wywołań Update(), ale obiekt pozostaje w scenie, nadal jest rysowany i nadal koliduje, a pozostałe jego komponenty nadal działają.

challenge icon

Wyzwanie

Średni

Skrypt dźwigni przechowuje most w polu bridge. Spraw, by klawisz Space sterował mostem: pierwsze naciśnięcie go ukrywa, kolejne przywraca i tak dalej — jedno przełączenie na naciśnięcie.

Ukryj cały most, łącznie z koliderem, żeby nikt nie mógł stać na moście, którego nie ma.

Naciśnij Play, kilka razy naciśnij Space, a następnie Check.

Spróbuj swoich sił

using UnityEngine;

public class BridgeSwitch : MonoBehaviour
{
    public GameObject bridge;

    void Update()
    {
        // Spacja ukrywa most, a ponowne naciśnięcie go pokazuje
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy skryptów w Unity