Menu
CoddyTech

Riferimenti nell'Inspector

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 43 di 85.

Un campo può contenere un altro oggetto. Assegnagli un tipo come Transform o GameObject e nell’Inspector vedrai uno slot vuoto, che puoi riempire trascinandovi sopra un oggetto dalla Hierarchy. Questo script della telecamera segue l’oggetto trascinato in player, rimanendo 3 unità sopra e 6 dietro di esso:

public Transform player;

void Update()
{
    transform.position = player.position + new Vector3(0, 3, -6);
}

Uno slot lasciato vuoto mostra None e, a ogni frame, la prima riga che lo usa genera un’eccezione: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. La riga successiva del messaggio dice cosa fare: You probably need to assign the player variable of the CameraFollow script in the inspector. Indica il campo e lo script, così sai quale slot riempire.

Alcuni script dovrebbero funzionare anche con lo slot vuoto. Unity fa sì che uno slot vuoto sia uguale a null, quindi uno script di questo tipo verifica prima di usarlo. Se racchiudi la riga in Update() tra if (player != null), una telecamera senza player rimane dov’è invece di generare un’eccezione.

challenge icon

Sfida

Medio

Invia ogni guardia al posto indicato dal suo Inspector.

  1. Aggiungi il campo public Transform post;. Lo slot di Guard1 contiene Post1; quello di Guard2 è vuoto.
  2. In Update(), quando post == null, esegui return; così una guardia senza posto resta ferma.
  3. Poi spostala con Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).

Premi «Gioca»: Guard1 raggiunge il suo posto e Guard2 aspetta. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post: il Transform verso cui si dirige questa guardia, impostato nell'Inspector
    public float speed = 2f;

    void Update()
    {
        // Cammina verso post alla velocità speed. Una guardia con uno slot post vuoto rimane ferma.
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity