Menu
CoddyTech

Dodawanie komponentu

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

gameObject.AddComponent<T>() dodaje do obiektu nowy komponent typu T podczas działania gry i zwraca go, aby można było skonfigurować go w kolejnych wierszach. Należy on do obiektu GameObject, do którego skrypt ma dostęp przez gameObject. To ognisko zyskuje ciepłe, pomarańczowe światło po uruchomieniu gry:

void Start()
{
    Light glow = gameObject.AddComponent<Light>();
    glow.color = new Color(1f, 0.5f, 0f);
    glow.intensity = 2f;
}

Komponent dodany w ten sposób pozostaje aktywny podczas działania gry. Zatrzymaj „Graj”, a obiekt wróci do stanu zapisanego w scenie, bez komponentu Light. Twoje własne skrypty też są komponentami: gameObject.AddComponent<Spinner>() dodaje komponent Spinner, który zaczyna działać jak każdy inny skrypt.

Większość komponentów można dodać więcej niż raz, ale niektórych nie można: obiekt może mieć najwyżej jeden komponent Rigidbody, a próba dodania drugiego powoduje wyświetlenie ostrzeżenia w konsoli zamiast tego: Can't add component 'Rigidbody'. Kod, który może wykonać się więcej niż raz, przed dodaniem komponentu sprawdza, czy obiekt już go ma.

challenge icon

Wyzwanie

Średni

Spacja potrząsa palmą, a kokos spada.

  1. W Update(), po naciśnięciu Input.GetKeyDown(KeyCode.Space), dodaj Rigidbody za pomocą gameObject.AddComponent<Rigidbody>().
  2. Dodaj go tylko wtedy, gdy kokos jeszcze go nie ma: !TryGetComponent(out Rigidbody rb). Drugie naciśnięcie spacji nie doda drugiego Rigidbody.

Naciśnij „Graj” i naciśnij spację: kokos spadnie na piasek. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: dodaj Rigidbody, jeśli kokos jeszcze go nie ma
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity