SerializeField
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 8 di 67.
Un campo public svolge due funzioni contemporaneamente: viene visualizzato nell’Inspector e tutti gli altri script possono leggerlo e modificarlo. Spesso, però, ti serve solo la prima. Un campo private (il valore predefinito in C#) può essere modificato solo dalla sua stessa classe, quindi nessun altro script può alterarlo, ma Unity non lo mostra nell’Inspector.
[SerializeField] chiede a Unity di salvare e mostrare comunque un campo privato. L’intervallo di questa torretta viene impostato per ogni torretta nell’Inspector e nessun altro script può modificarlo:
[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]. Fai attenzione anche al caso opposto: 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
FacileL'height della lampada è pubblico, quindi qualsiasi script potrebbe spostarla. Rendi height privato mantenendolo nell'Inspector, che lo imposta su 4. La lampada deve comunque rimanere appesa all'altezza impostata nell'Inspector.
Premi Play e osserva l'altezza della lampada, poi Check.
Provalo tu
using UnityEngine;
public class LampHeight : MonoBehaviour
{
public float height = 1f;
void Start()
{
transform.position = new Vector3(0, height, 0);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di scripting in Unity
1Il tuo primo script
Ciao, UnityPosiziona il cuboMuovi a ogni frameRuota ogni secondoGuida con i tastiRiepilogo: guida il cubo4Vettori
Sommare vettoriDirezioniSpazio locale e spazio globaleVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni7Progetto: Acchiappa la stella
L'acchiappatoreUna stella cadente10Il ciclo di vita degli script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL’ordine del ciclo di vitaRipasso: logger del ciclo di vita2L'Inspector
Campi dell'InspectorSerializeFieldNumeri decimali e MathfAttributi dell'InspectorRiepilogo: Ascensore5Trasformazioni e gerarchia
Genitori e figliScalaGuarda gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita6Oggetti di gioco e componenti
Riferimenti nell’InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRipasso: interruttore della luce