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.
Aufgabe
MittelBei jedem Klick schaltet die Signalleuchte weiter: Rot, Gelb, Grün, dann wieder Rot.
- Füge ein Feld
Renderer rend;hinzu und setze es inStart()mitGetComponent<Renderer>(). - Erhöhe bei
Input.GetMouseButtonDown(0)ein Feldint stepum 1 und setze es wieder auf 0, sobald es 3 erreicht. - Setze
rend.material.colorfür Schritt 0, 1 oder 2 aufColor.red,Color.yellowoderColor.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
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground