Menu
CoddyTech

Eine Komponente abrufen

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

Ein GameObject ist ein Container für Komponenten: einen Transform, einen MeshRenderer, der es zeichnet, einen Collider und deine Skripte. GetComponent<Renderer>() gibt die Komponente dieses Typs auf demselben Objekt zurück, und über sie ändert dein Skript, was diese Komponente tut. transform ist eine vorgefertigte Kurzform für den Transform; alle anderen Komponenten musst du selbst abrufen.

Dieser Würfel wird rot, wenn die Leertaste gedrückt wird. Er sucht seinen Renderer einmal in Start() und speichert ihn in einem Feld: GetComponent durchsucht jedes Mal, wenn es aufgerufen wird, die Komponenten des Objekts, und das Ergebnis ändert sich nicht.

Renderer rend;

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

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

rend.material gibt diesem Objekt bei der ersten Verwendung eine eigene Kopie seines Materials, sodass andere Objekte, die dasselbe Material verwenden, ihre Farbe behalten. Unity stellt dir einige benannte Farben zur Verfügung, etwa Color.red, Color.green, Color.blue, Color.yellow und Color.gray; new Color(r, g, b) erstellt eine beliebige andere Farbe, wobei jeder Anteil zwischen 0 und 1 liegt.

challenge icon

Aufgabe

Mittel

Bei jedem Klick schaltet die Signalleuchte weiter: Rot, Gelb, Grün, dann wieder Rot.

  1. Füge ein Feld Renderer rend; hinzu und setze es in Start() mit GetComponent<Renderer>().
  2. Erhöhe bei Input.GetMouseButtonDown(0) ein Feld int step um 1 und setze es wieder auf 0, sobald es 3 erreicht.
  3. Setze rend.material.color für Schritt 0, 1 oder 2 auf Color.red, Color.yellow oder Color.green.

Drücke auf „Spielen“ und klicke im Spiel: Die Farbe der Leuchte ändert sich. Drücke dann auf „Prüfen“.

Probier es selbst

using UnityEngine;

public class SignalLight : MonoBehaviour
{

    void Start()
    {
    }

    void Update()
    {
        // Bei jedem Klick: Rot, dann Gelb, dann Grün, dann wieder Rot
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground