En Unity, el atributo [SerializedField] se usa en C# para hacer que un campo privado de una clase sea visible y editable en el Inspector de Unity sin necesidad de cambiar su nivel de acceso a public.
using UnityEngine;
public class MiScript : MonoBehaviour
{
[SerializeField] // Permite que el campo privado sea visible en el Inspector
private int vida = 100;
[SerializeField] // También funciona con otros tipos de datos
private string nombre = "Jugador";
[SerializeField]
private GameObject objeto;
}
[SerializeField]
1. Encapsulamiento: Permite mantener los campos privados mientras siguen siendo configurables en el Inspector.
2. Mejor organización del código: Evita exponer datos innecesarios en otras clases.
3. Funciona con tipos serializables: Puede usarse en int, float, string, bool, Vector3, GameObject, List<>, Dictionary<> (con tipos serializables) y más.
public vs [SerializeField]
Si en lugar de [SerializeField] usaras public, el campo también sería visible en el Inspector, pero quedaría expuesto a todas las clases, lo que puede romper el principio de encapsulamiento:
public int vida; // Visible en el Inspector y accesible desde cualquier parte
Con [SerializeField], el campo sigue siendo privado, pero sigue apareciendo en el Inspector:
[SerializeField] private int vida; // Visible en el Inspector pero no accesible desde otras clases
[SerializeField]?
Es una práctica recomendada en Unity para mantener el código más limpio y seguro. 🚀
Jorge García
Fullstack developer