Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Nascondi l’altezza della lampada agli altri script, ma mantienila nell’Inspector.

  1. Modifica il campo in [SerializeField] private float height = 1f;.
  2. Lascia Start() così com’è: l’Inspector imposta height su 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

Esercitati da solo: Playground Unity