Ottenere un componente
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 44 di 85.
Un GameObject è un contenitore di componenti: un Transform, un MeshRenderer che lo disegna, un collider, i tuoi script. GetComponent<Renderer>() restituisce il componente di quel tipo presente sullo stesso oggetto e, tramite esso, il tuo script modifica ciò che fa quel componente. transform è una scorciatoia già pronta per il Transform; tutti gli altri componenti devi recuperarli tu.
Questo cubo diventa rosso quando premi Space. Cerca il suo Renderer una volta, in Start(), e lo conserva in un campo: GetComponent cerca i componenti dell'oggetto ogni volta che viene chiamato e il risultato non cambia.
Renderer rend;
void Start()
{
rend = GetComponent<Renderer>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rend.material.color = Color.red;
}
}rend.material assegna a questo oggetto una copia personale del suo materiale la prima volta che lo usi, così gli altri oggetti che condividevano il materiale mantengono il proprio colore. Unity ti fornisce i nomi di alcuni colori, come Color.red, Color.green, Color.blue, Color.yellow e Color.gray; new Color(r, g, b) crea qualsiasi altro colore, con ciascuna componente da 0 a 1.
Sfida
MedioOgni clic fa avanzare la luce di segnalazione: rosso, giallo, verde, poi di nuovo rosso.
- Aggiungi un campo
Renderer rend;e impostalo inStart()conGetComponent<Renderer>(). - Quando si verifica
Input.GetMouseButtonDown(0), aggiungi 1 a un campoint stepe reimpostalo a 0 quando raggiunge 3. - Imposta
rend.material.colorsuColor.red,Color.yellowoColor.greenper i passaggi 0, 1 o 2.
Premi «Gioca» e fai clic nel gioco: la luce cambia colore. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class SignalLight : MonoBehaviour
{
void Start()
{
}
void Update()
{
// A ogni clic: rosso, poi giallo, poi verde, poi di nuovo rosso
}
}
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