Menu
CoddyTech

Pobieranie komponentu

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

GameObject to kontener komponentów: Transform, MeshRenderer, który go rysuje, collider i twoje skrypty. GetComponent<Renderer>() zwraca komponent tego typu z tego samego obiektu, a za jego pośrednictwem skrypt zmienia działanie tego komponentu. transform to gotowy skrót do Transform; każdy inny komponent musisz pobrać samodzielnie.

Ten sześcian zmienia kolor na czerwony po naciśnięciu spacji. Wyszukuje swój Renderer raz, w Start(), i przechowuje go w polu: GetComponent przeszukuje komponenty obiektu przy każdym wywołaniu, a wynik się nie zmienia.

Renderer rend;

void Start()
{
    rend = GetComponent<Renderer>();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        rend.material.color = Color.red;
    }
}

rend.material przy pierwszym użyciu tworzy dla tego obiektu własną kopię jego materiału, więc inne obiekty, które korzystały z tego samego materiału, zachowują swój kolor. Unity udostępnia nazwy niektórych kolorów, na przykład Color.red, Color.green, Color.blue, Color.yellow i Color.gray; new Color(r, g, b) tworzy dowolny inny kolor, a każda składowa ma wartość od 0 do 1.

challenge icon

Wyzwanie

Średni

Każde kliknięcie przełącza sygnalizator: czerwony, żółty, zielony, a potem znowu czerwony.

  1. Dodaj pole Renderer rend; i ustaw je w Start() za pomocą GetComponent<Renderer>().
  2. Po Input.GetMouseButtonDown(0) zwiększ wartość pola int step o 1 i ustaw ją z powrotem na 0, gdy osiągnie 3.
  3. Ustaw rend.material.color na Color.red, Color.yellow lub Color.green dla kroku 0, 1 lub 2.

Naciśnij „Graj” i kliknij w grę: światło zmieni kolor. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class SignalLight : MonoBehaviour
{

    void Start()
    {
    }

    void Update()
    {
        // Każde kliknięcie: czerwony, potem żółty, potem zielony, a następnie znów czerwony
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity