Menu
CoddyTech

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.

challenge icon

Sfida

Medio

Ogni clic fa avanzare la luce di segnalazione: rosso, giallo, verde, poi di nuovo rosso.

  1. Aggiungi un campo Renderer rend; e impostalo in Start() con GetComponent<Renderer>().
  2. Quando si verifica Input.GetMouseButtonDown(0), aggiungi 1 a un campo int step e reimpostalo a 0 quando raggiunge 3.
  3. Imposta rend.material.color su Color.red, Color.yellow o Color.green per 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

Esercitati da solo: Playground Unity