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