Script base de Candy en Unity C#
Clase 7 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#
Viendo ahora - 8

Configuración y Gestión del Tablero en Unity con C#
10:08 min - 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
Programar un match 3 en Unity con C# exige una base sólida: definir las variables clave, entender el ciclo de vida de MonoBehaviour y preparar la interacción entre caramelos. Aquí se sientan los cimientos del objeto Candy: color de selección, referencia al anterior seleccionado, componente gráfica, estado de selección, direcciones adyacentes y un identificador único. Todo listo para avanzar con confianza.
¿Qué se define en el script Candy para Unity?
En el esqueleto del script ya están los métodos Start y Update de MonoBehaviour. A partir de ahí, se añaden las variables que sostendrán la lógica del gameplay. Se trabaja en Visual Studio, que autocompleta y accede a librerías, facilitando el flujo de trabajo.
- Color de selección compartido para resaltar un caramelo activo.
- Referencia al caramelo anterior para evaluar intercambios.
- Componente gráfica con SpriteRenderer para tintado y visual.
- Estado booleano para saber si está seleccionado.
- Direcciones adyacentes para conectividad cuatro: arriba, abajo, izquierda, derecha.
- Identificador público para distinguir instancias del mismo asset.
¿Cómo organizar las variables en C# para Candy?
using UnityEngine;
public class Candy : MonoBehaviour
{
// Color de selección compartido por todos los caramelos.
private static Color selectedColor = new Color(0.5f, 0.5f, 0.5f, 1.0f);
// Referencia al caramelo previamente seleccionado.
private static Candy previousSelected = null;
// Componente visual del caramelo.
private SpriteRenderer spriteRenderer;
// Estado de selección del caramelo.
private bool isSelected = false;
// Direcciones adyacentes (conectividad cuatro).
private Vector2[] adjacentDirections = new Vector2[]
{
Vector2.up,
Vector2.down,
Vector2.left,
Vector2.right
};
// Identificador público para distinguir instancias.
public int id;
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
}
¿Qué rol cumplen selected color y previous selected como static?
- static indica una sola instancia compartida por todos los caramelos.
- El color de selección es común: todos usan el mismo tinte al seleccionarse.
- La referencia al caramelo previo permite comparar el actual con el anterior para el intercambio y comprobar si hay tres en raya.
¿Por qué usar un identificador público int id?
- El aspecto visual no basta: puede haber caramelos iguales en distintas celdas.
- Un id público permite distinguir instancias del mismo asset en el tablero.
- Es una práctica habitual: usuarios, partidas y assets suelen tener identificador.
¿Cómo inicializar la componente gráfica con awake y getcomponent?
Primero se ejecuta Awake y luego Start: por eso la inicialización de la componente se hace en Awake. Se usa GetComponent para obtener el SpriteRenderer local y poder aplicar colores. Además, el estado de selección parte en falso para evitar confusiones iniciales.
- Awake antes de Start: asegura que la componente esté lista al iniciar.
- GetComponent
() : acceso directo a la parte visual del caramelo. - Tintado con selectedColor: gris medio (0.5f, 0.5f, 0.5f, 1.0f) para marcar selección.
- isSelected = false al crear el caramelo.
Ejemplo de inicialización en Awake:
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
¿Cómo manejar la conectividad cuatro con Vector2 y enumerados?
En un match 3 tipo Candy Crush, el movimiento es en conectividad cuatro. Se preparan las direcciones con un array de Vector2 usando valores predefinidos que actúan como “enumerados” prácticos: arriba, abajo, izquierda, derecha. Esto permitirá, más adelante, lanzar un rayo en cada dirección para localizar vecinos.
¿Cómo quedan las direcciones adyacentes en el array?
private Vector2[] adjacentDirections = new Vector2[]
{
Vector2.up, // (0, 1)
Vector2.down, // (0, -1)
Vector2.left, // (-1, 0)
Vector2.right // (1, 0)
};
¿Para qué servirá este arreglo en la lógica de intercambio?
- Localizar el vecino en cada dirección de forma ágil.
- Comprobar si el intercambio de dos caramelos produce un tres en raya.
- Evitar cálculos repetitivos al tener las direcciones preparadas.
¿Añadirías alguna variable más para tu propio gameplay o una variante de reglas? Comparte tu enfoque y cuéntanos cómo lo implementarías en Unity con C#.