Eine Komponente hinzufügen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 46 von 85.
gameObject.AddComponent<T>() fügt dem Objekt während des Spiels eine neue Komponente vom Typ T hinzu und gibt sie zurück, damit du sie in den nächsten Zeilen einrichten kannst. Sie gehört zum GameObject, auf das ein Skript über gameObject zugreift. Dieses Lagerfeuer gibt sich beim Start des Spiels ein warmes oranges Licht:
void Start()
{
Light glow = gameObject.AddComponent<Light>();
glow.color = new Color(1f, 0.5f, 0f);
glow.intensity = 2f;
}Eine auf diese Weise hinzugefügte Komponente bleibt bestehen, solange das Spiel läuft. Beende „Spielen“, und das Objekt entspricht wieder dem gespeicherten Szenenstand, ohne Light. Auch deine eigenen Skripte sind Komponenten: gameObject.AddComponent<Spinner>() fügt einen Spinner hinzu, der wie jedes andere Skript zu laufen beginnt.
Die meisten Komponenten können mehr als einmal hinzugefügt werden, manche jedoch nicht: Ein Objekt kann höchstens einen Rigidbody enthalten, und bei der Anforderung eines zweiten erscheint stattdessen eine Warnung in der Console: Can't add component 'Rigidbody'. Code, der möglicherweise mehr als einmal ausgeführt wird, prüft vor dem Hinzufügen, ob das Objekt die Komponente bereits enthält.
Aufgabe
MittelDie Leertaste schüttelt die Palme, und die Kokosnuss fällt herunter.
- Füge in
Update()beiInput.GetKeyDown(KeyCode.Space)mitgameObject.AddComponent<Rigidbody>()ein Rigidbody hinzu. - Füge es nur hinzu, wenn die Kokosnuss noch keines hat:
!TryGetComponent(out Rigidbody rb). Ein zweiter Druck auf die Leertaste fügt kein zweites Rigidbody hinzu.
Klicke auf „Spielen“ und drücke die Leertaste: Die Kokosnuss fällt in den Sand. Klicke danach auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class CoconutDrop : MonoBehaviour
{
void Update()
{
// Space: Füge einen Rigidbody hinzu, falls die Kokosnuss noch keinen hat
}
}
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