Hoy vamos a conocer en que consisten el “Encapsulamiento y los Constructores” en C# y Unity.
Uno de los pilares más importantes de la programación orientada a objetos (POO) es el encapsulamiento, y junto con él, los constructores que permiten estructurar tus clases de manera limpia, segura y profesional.
En este tutorial aprenderás:
- Qué es el encapsulamiento
- Qué son los constructores
- Cómo usarlos correctamente en Unity
- Ejemplos prácticos con personajes, enemigos y lógica de juegos
Tutorial de Unity Nivel: Principiante.
3.1 ¿Qué es el encapsulamiento?
Encapsulamiento es el principio que consiste en ocultar el estado interno de un objeto (sus variables) y proteger su acceso, exponiendo solo lo necesario.
En otras palabras, el Encapsulamiento es “Controlar cómo se accede y modifica la información interna de un objeto.”
Como ya habrás notado, en esta serie de tutoriales y en los anteriores ya hemos tratado este tema de proteger a nuestro código para que solo algunos o ninguno tenga acceso a el y lo pueda modificar. Y esto lo logramos mediante los “Modificadores de acceso“; los cuales son:
Modificador | ¿Dónde puede accederse? |
---|---|
public |
Desde cualquier parte del código |
private |
Solo desde la misma clase |
protected |
Desde la clase y sus subclases |
internal |
Solo desde el mismo ensamblado (poco usado en Unity) |
protected internal |
Desde subclases y el mismo ensamblado |
Ejemplo 1: Sin encapsulamiento
public class Jugador { public int salud; }
Problema: Cualquier script puede modificar salud directamente sin control, incluso poner valores negativos.
Ejemplo 2: Con encapsulamiento usando private y propiedades
public class Jugador { private int salud = 100; public int Salud { get { return salud; } private set { salud = Mathf.Clamp(value, 0, 100); // Limita entre 0 y 100 } } public void RecibirDaño(int daño) { Salud -= daño; } }
Ahora:
- El valor de salud está protegido internamente.
- Solo se puede modificar desde dentro de la clase, con lógica de validación.
- Desde otros scripts puedes leer la salud, pero no modificarla directamente.
Y de esta manera podemos ver claramente en que consiste el Encapsulamiento 🙂
3.2 ¿Y los Constructores?
Un constructor es un método especial que se ejecuta automáticamente cuando creas una instancia de una clase usando new.
Se usa para inicializar valores de una clase cuando se crea.
Ejemplo en C# normal fuera de Unity (sin MonoBehaviour)
Vamos a formar la base para un personaje:
public class Personaje { public string nombre; public int nivel; // Constructor public Personaje(string nombre, int nivel) { this.nombre = nombre; this.nivel = nivel; } }
Ahora, vamos a usar un constructor para crear al personaje (ojo a cuando usamos “new“):
void Start() { Personaje heroe = new Personaje("Artemis", 5); Debug.Log("Nombre: " + heroe.nombre + ", Nivel: " + heroe.nivel); }
Nota:
En C# de Unity o usando MonoBehaviour, no se permite usar “new” para crear componentes MonoBehaviour. En su lugar, los scripts que heredan de MonoBehaviour deben usarse como componentes y Unity los inicializa automáticamente (en otras palabras, es necesario usar el método Awake() o Start()).
Ejemplo en C# de Unity (con MonoBehaviour)
Vamos a formar la base para un personaje “Enemigo” (este script no usa MonoBehaviour):
public class EnemigoData { private string nombre; private int salud; public string Nombre => nombre; public int Salud => salud; public EnemigoData(string nombre, int salud) { this.nombre = nombre; this.salud = Mathf.Clamp(salud, 0, 100); } public void RecibirDaño(int daño) { salud = Mathf.Max(salud - daño, 0); } }
Ahora, vamos a usar un constructor para crear al personaje en un script que si usa MonoBehaviour (ojo a cuando “Definimos al Componente” y usamos “new” dentro de “Start()“):
public class ControladorEnemigo : MonoBehaviour { private EnemigoData datos; void Start() { datos = new EnemigoData("Goblin", 80); datos.RecibirDaño(30); Debug.Log(datos.Nombre + " tiene " + datos.Salud + " de salud."); } }
Esta estructura de programación es muy común al desarrollar videojuegos en Unity y la verás constantemente en diferentes proyectos.
3.3 Conclusión.
El uso del Encapsulamiento y los Constructores (ya sean juntos o por separado) nos sirve para:
- Seguridad: Evitar que otras clases modifiquen variables sin control
- Claridad: Defines reglas de acceso y validación
- Organización: Separar lógica de datos y visualización
- Reutilización: Puedes crear múltiples objetos con diferentes datos fácilmente
El encapsulamiento y los constructores son herramientas clave para escribir código robusto en Unity. Aunque MonoBehaviour tiene restricciones, puedes combinar clases normales con scripts de Unity para lograr un diseño limpio y eficiente.
Los casos más comunes donde aplicamos a los constructores y el encapsulamiento son:
- Para Clases de datos (Jugador, Item, Inventario)
- Para Lógica de negocio (Sistema de Combate, Calculadora)
- Para Controladores internos (Gestor de Puntos, Temporizador)
- Para proteger y validar datos
- Para inicializar clases de forma controlada
Ejercicios.
Para reforzar lo aprendido, es necesario practicarlo, por ello intenta realizar los siguientes ejercicios:
- Diseña tu propio constructor como el del ejemplo para crear dos tipos de Héroes.
Este Tutorial de Unity termina aquí. Acompáñanos en el siguiente tutorial donde veremos “Corrutinas”.
Siguiente Tutorial de Unity: “2.”
Unity Tutorial: “C# en Unity 2“
1. Los Métodos Clave de Unity
Ver más Tutoriales