Menu
CoddyTech

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.

challenge icon

Sfida

Facile

L'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);
    }
}
quiz iconMettiti alla prova

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