Aggiungere un componente
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 46 di 85.
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 si avvia, questo falò si illumina di una calda luce 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 attivo mentre il gioco è in esecuzione. Interrompi «Gioca» 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, nella Console appare un avviso: Can't add component 'Rigidbody'. Il codice che potrebbe essere eseguito più di una volta verifica se l'oggetto possiede già il componente prima di aggiungerlo.
Sfida
MedioLo spazio scuote la palma e la noce di cocco cade.
- In
Update(), quando si verificaInput.GetKeyDown(KeyCode.Space), aggiungi un Rigidbody congameObject.AddComponent<Rigidbody>(). - Aggiungilo solo se la noce di cocco non ne ha già uno:
!TryGetComponent(out Rigidbody rb). Una seconda pressione della barra spaziatrice non aggiunge un secondo Rigidbody.
Premi «Gioca» e premi la barra spaziatrice: la noce di cocco cade sulla sabbia. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class CoconutDrop : MonoBehaviour
{
void Update()
{
// Space: aggiungi un Rigidbody, se la noce di cocco non ne ha ancora uno
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity