Menu
CoddyTech

SerializeField

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 8 de 67.

Um campo public faz duas coisas ao mesmo tempo: aparece no Inspector, e qualquer outro script pode lê-lo e alterá-lo. Muitas vezes, você quer apenas a primeira. Um campo private (o padrão em C#) só pode ser alterado pela própria classe, então nenhum outro script pode modificá-lo, mas o Unity não o mostra no Inspector.

[SerializeField] pede ao Unity que salve e mostre um campo privado mesmo assim. O alcance desta torre é definido para cada torre no Inspector, e nenhum outro script pode acessá-lo:

[SerializeField] private float range = 5f;

void Start()
{
    Debug.Log("Range: " + range);
}

É assim que a maioria dos códigos do Unity mantém suas configurações: privadas, com [SerializeField]. Cuidado com o contrário: torne um campo privado e esqueça o atributo, e o Unity descartará silenciosamente o valor salvo na cena. O campo voltará ao número definido no código, sem nenhum erro para avisar você.

challenge icon

Desafio

Fácil

A height da lâmpada é pública, então qualquer script poderia movê-la. Torne height privada, mantendo-a no Inspector, que a define como 4. A lâmpada ainda deve ficar na altura definida pelo Inspector.

Pressione Play e observe a altura da lâmpada; depois, Check.

Experimente você mesmo

using UnityEngine;

public class LampHeight : MonoBehaviour
{
    public float height = 1f;

    void Start()
    {
        transform.position = new Vector3(0, height, 0);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity