Configuración y Gestión del Tablero en Unity con C#
Clase 8 de 31 • Curso de Desarrollo de Videojuegos para Móviles con Unity
Contenido del curso
Sprite Atlas y Generación de Caramelos
- 5

Sprite Editor y cámaras en Unity para móviles
11:53 min - 6

Sprites múltiples en Unity con slice automático
12:06 min - 7

Script base de Candy en Unity C#
10:57 min - 8

Configuración y Gestión del Tablero en Unity con C#
Viendo ahora - 9

Inicializar tablero 2D con bucles anidados
10:27 min - 10

Configuración de slice por tamaño en Unity
05:22 min - 11

Creación y Configuración de Tablero en Unity para Videojuegos
08:22 min - 12

Sprites aleatorios de prefabs en Unity
07:18 min
Diseño de Game Play
- 13

Arreglar bug de tripletes en tablero Candy Crush
12:33 min - 14

OnMouseDown para seleccionar caramelos
12:14 min - 15

Swap de caramelos sin mover GameObject
10:17 min - 16

Configuración de Física en Unity para Movimiento de Caramelos
13:30 min - 17

Detección y Eliminación de Coincidencias en Candy Crush
12:06 min - 18

Anular sprites en lugar de destruir objetos
15:26 min - 19

Caída en cascada para match-3 con corrutinas
13:23 min - 20

Generar caramelos sin crear matches accidentales
09:09 min - 21

Último bug visual: rebotes y recálculos
10:55 min
Retos finales
- 22

Diseño de Interfaz Gráfica en Unity para Videojuegos
11:20 min - 23

Variables autocomputadas en Unity GUI Manager
07:31 min - 24

Implementación de Singleton en Gestor de Interfaz de Usuario
08:13 min - 25

Corrutinas para pantalla Game Over sin interrupciones
06:55 min - 26

Multiplica puntuación con combos inteligentes
04:46 min - 27

Integra tres audios en tu videojuego de caramelos
01:47 min - 28

Animación y Destrucción de Caramelos en Videojuegos
02:00 min - 29

Menú principal para tu videojuego móvil
03:28 min
Cierre del curso
Diseña un tablero sólido en Unity con una arquitectura clara y escalable. Aquí verás cómo estructurar un Board Manager que controla caramelos, aplica el patrón singleton y prepara la matriz bidimensional del juego con un offset preciso. Todo se apoya en buenas prácticas de C# y en la delegación de responsabilidades.
¿Qué hace el board manager en Unity?
El tablero actúa como mánager: gobierna a los caramelos y coordina su comportamiento. La idea clave es separar responsabilidades: el tablero dirige y los caramelos obedecen. Así evitamos que cada caramelo conozca a todos los demás y mantenemos el orden de la escena.
- Centraliza la lógica del juego en un solo manager.
- Define el tamaño del tablero con filas y columnas.
- Controla el estado de intercambio con una bandera.
- Mantiene una referencia al caramelo seleccionado.
- Evita dependencias innecesarias entre caramelos.
Además, se opta por delegar tareas: en lugar de llenar el Start, se crea un método específico para la configuración inicial. Esta práctica mejora la legibilidad y el mantenimiento del código.
¿Cómo aplicar el patrón singleton correctamente?
Un manager debe existir una sola vez. Con un singleton, la clase garantiza una única instancia y elimina duplicados si aparecen. La convención: variable pública y estática del mismo tipo, llamada comúnmente sharedInstance. La inicialización se hace en Awake o en Start comparando con null.
using System.Collections.Generic; using UnityEngine; public class BoardManager : MonoBehaviour { // Singleton: única instancia compartida. public static BoardManager sharedInstance; void Awake() { if (sharedInstance == null) { sharedInstance = this; // este es el director válido. } else { Destroy(gameObject); // elimina directores duplicados. } } }
Claves del patrón:
- variable pública y estática: una sola instancia accesible globalmente.
- comprobación de null: primer director toma el cargo.
- eliminación de duplicados: evita conflictos de control.
¿Qué variables definen el tablero y cómo se inicializa con offset?
La estructura del tablero combina una lista de gráficos, una matriz de objetos, tamaños y un estado de intercambio. Además, se prepara un método que crea el tablero inicial usando un offset obtenido del BoxCollider2D del caramelo actual para respetar márgenes en pantalla.
using System.Collections.Generic; using UnityEngine; public class BoardManager : MonoBehaviour { public static BoardManager sharedInstance; // Gráficos de los caramelos (actúan como si fueran *prefabs*). public List<Sprite> prefabs = new List<Sprite>(); // Caramelo actualmente seleccionado por el manager. public GameObject currentCandy; // Tamaño del tablero en X e Y. public int xSize, ySize; // Matriz bidimensional de caramelos en pantalla. private GameObject[,] candies; // Control del intercambio: propiedad con *getter* y *setter* estándar. public bool IsShifting { get; set; } void Start() { // Calcula el margen usando el tamaño del BoxCollider2D del caramelo. Vector2 offset = currentCandy.GetComponent<BoxCollider2D>().size; CreateInitialBoard(offset); } // Delegación: método dedicado a configurar el tablero inicial. private void CreateInitialBoard(Vector2 offset) { // Aquí se crearán las filas y columnas con bucles anidados. // Se usarán xSize e ySize para poblar 'candies'. // Se aplicará 'offset' para posicionar de forma espaciosa. } }
Puntos clave de la configuración:
- lista de Sprite llamada «prefabs»: editable desde el editor.
- GameObject currentCandy: referencia al caramelo activo.
- enteros xSize, ySize: dimensiones del tablero.
- matriz GameObject[,]: organización en filas y columnas.
- bandera IsShifting: impide múltiples cambios simultáneos.
- método CreateInitialBoard(Vector2 offset): prepara la colocación con margen.
- delegación desde Start: código limpio y fácil de ampliar.
Buenas prácticas destacadas:
- encapsular la matriz como privada: solo el manager conoce el conjunto.
- usar propiedad automática para el estado: getter/setter sin lógica extra.
- pensar la creación con dos bucles: uno para columnas y otro para filas.
¿Quieres que ampliemos con animaciones o con la lógica de llenado usando bucles anidados? Cuéntame qué parte te gustaría ver primero y en qué punto de Unity te quedaste.