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.