Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Die Leertaste schüttelt die Palme, und die Kokosnuss fällt herunter.

  1. Füge in Update() bei Input.GetKeyDown(KeyCode.Space) mit gameObject.AddComponent<Rigidbody>() ein Rigidbody hinzu.
  2. 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

Übe selbstständig: Unity-Playground