Menu
CoddyTech

Aggiungere un componente

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 32 di 67.

gameObject.AddComponent<T>() aggiunge un nuovo componente di tipo T all’oggetto mentre il gioco è in esecuzione e lo restituisce, così puoi configurarlo nelle righe successive. Appartiene al GameObject, a cui uno script accede tramite gameObject. Quando il gioco inizia, questo falò si illumina di un caldo arancione:

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

Un componente aggiunto in questo modo rimane per tutta la durata del gioco. Interrompi la modalità Play e l’oggetto torna allo stato salvato nella scena, senza Light. Anche i tuoi script sono componenti: gameObject.AddComponent<Spinner>() aggiunge uno Spinner che inizia a funzionare come qualsiasi altro script.

La maggior parte dei componenti può essere aggiunta più di una volta, ma alcuni no: un oggetto può contenere al massimo un Rigidbody e, se ne richiedi un secondo, viene visualizzato un errore nella Console. Il codice che potrebbe essere eseguito più di una volta verifica se l’oggetto ha già il componente prima di aggiungerlo.

challenge icon

Sfida

Medio

La noce di cocco è appesa alla palma. Premendo Space, l’albero trema: la noce di cocco riceve un Rigidbody, così la gravità la trascina e cade sulla sabbia.

  • Prima di premere Space per la prima volta, la noce di cocco resta appesa dov’è.
  • Space aggiunge un Rigidbody solo quando la noce di cocco non ne ha ancora uno, quindi le pressioni successive non fanno nulla.

Premi Play, premi Space, poi Check.

Provalo tu

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Spazio: aggiungi un Rigidbody, se la noce di cocco non ne ha ancora uno
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di scripting in Unity