SerializeField
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 15 di 85.
Un campo public svolge due funzioni contemporaneamente: viene visualizzato nell'Inspector e qualsiasi altro script può leggerlo e modificarlo. Spesso vuoi solo la prima. Un campo private (l'impostazione predefinita in C#) può essere modificato solo dalla propria classe, quindi nessun altro script può comprometterlo, ma Unity non lo mostra nell'Inspector.
[SerializeField] chiede a Unity di salvare e mostrare comunque un campo privato. La portata di questa torretta viene impostata per ogni torretta nell'Inspector e nessun altro script può modificarla:
[SerializeField] private float range = 5f;
void Start()
{
Debug.Log("Range: " + range);
}È così che la maggior parte del codice Unity gestisce le proprie impostazioni: private, con [SerializeField]. Attenzione al caso inverso: rendi un campo private e dimentichi l'attributo, e Unity elimina silenziosamente il valore salvato nella scena. Il campo torna al numero indicato nel codice, senza alcun errore che te lo segnali.
Sfida
FacileNascondi l’altezza della lampada agli altri script, ma mantienila nell’Inspector.
- Modifica il campo in
[SerializeField] private float height = 1f;. - Lascia
Start()così com’è: l’Inspector impostaheightsu 4.
Premi «Gioca»: la lampada rimane appesa a un’altezza di 4. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class LampHeight : MonoBehaviour
{
public float height = 1f;
void Start()
{
transform.position = new Vector3(0, height, 0);
}
}
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