Sprites aleatorios de prefabs en Unity
Clase 12 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#
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
Viendo ahora
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
Genera un tablero visual atractivo en segundos: con C# en Unity, basta con tres cambios para que cada casilla muestre un caramelo aleatorio en lugar de un cuadrado. Aquí verás cómo usar lista de sprites, Random.Range, SpriteRenderer y un identificador único (ID) provisional para dejarlo todo listo antes de optimizar.
¿Cómo generar caramelos aleatorios con C# en Unity?
Para reemplazar el cuadrado por caramelos, la clave es intervenir justo antes de añadir el nuevo caramelo al array/colección. La idea: tomar un sprite de los prefabs de forma aleatoria, asignarlo al SpriteRenderer del objeto y establecer un ID temporal. El proceso es directo y evita cambios estructurales.
- Usar instanciación del caramelo y, antes de agregarlo al array, configurar su gráfico.
- Elegir uno aleatorio de la lista de sprites usando Random.Range con distribución uniforme por defecto.
- Reemplazar la imagen del cuadrado por el sprite seleccionado.
- Asignar un ID provisional hardcodeado para cada caramelo.
¿Qué líneas cambian para seleccionar un sprite de prefabs?
- Selecciona un sprite al azar del array/lista configurada de sprites/prefabs.
// 1) Elegir un sprite aleatorio de la lista
Sprite newSprite = sprites[UnityEngine.Random.Range(0, sprites.Count)];
// 2) Asignarlo al SpriteRenderer del nuevo caramelo
newCandy.GetComponent<SpriteRenderer>().sprite = newSprite;
- Notas clave: Random.Range(0, n) para enteros devuelve un valor entre 0 (incluido) y n (excluido). Si tienes 6 caramelos, los índices irán de 0 a 5.
¿Cómo asignar un identificador único provisional?
- Configura un ID temporal para diferenciar caramelos. Evita usar 0 si está reservado en colecciones; utiliza -1 como valor “no válido”.
// 3) Asignar un ID provisional (hardcodeado)
newCandy.GetComponent<Candy>().Id = -1;
- Este DNI/ID se calculará automáticamente más adelante. De momento se deja hardcodeado para avanzar rápido.
¿Dónde insertar el código en el word manager?
El cambio debe colocarse entre el renombrado del nuevo caramelo y su inserción en la colección de caramelos. Así te aseguras de que, cuando se agregue al array, ya tenga su SpriteRenderer configurado y su ID establecido.
- Insertar las 3 líneas tras la instanciación de newCandy.
- Hacerlo antes de añadir el objeto al array/lista del tablero.
- Mantener el resto del flujo sin cambios.
Ejemplo de ubicación en pseudocódigo:
var newCandy = Instantiate(currentCandy, position, rotation);
// aquí: configurar gráfico e ID antes de añadirlo a la colección
Sprite newSprite = sprites[UnityEngine.Random.Range(0, sprites.Count)];
newCandy.GetComponent<SpriteRenderer>().sprite = newSprite;
newCandy.GetComponent<Candy>().Id = -1;
candies[row, col] = newCandy; // ahora sí, se agrega a la colección
Conceptos trabajados aquí: instanciación, colección/array, SpriteRenderer, lista de sprites, Random.Range, ID único. Además, se menciona la distribución uniforme como base; más adelante se verán otras distribuciones de probabilidad.
¿Qué validar en el editor y qué problemas aleatorios surgen?
Antes de ejecutar, verifica el guardado del script en el editor. El icono de círculo indica cambios sin guardar; al usar Ctrl+S (Windows) o Command+S (Mac) desaparece y se muestra una equis. Luego presiona play para ver el tablero con caramelos.
- Guardar siempre el script antes de compilar y dar a play.
- Confirmar que aparecen caramelos y no cuadrados.
- Notar la aleatoriedad de cada partida: el orden cambia en cada ejecución.
Durante la prueba se detectan efectos de la aleatoriedad inicial:
- Aparición de tripletes o cadenas largas al empezar.
- Ejemplo: varias sandías alineadas o una fila con seis caracolas consecutivas.
- Estos casos se corregirán con lógica adicional que usará el ID y validaciones de vecinos (arriba, abajo, izquierda, derecha) para evitar coincidencias iniciales.
¿Quieres que profundicemos en cómo calcular el ID automáticamente y prevenir tripletes desde el inicio? Deja tu duda o comentario y lo abordamos en el siguiente paso.