Tomar decisiones: if / else#
El if ejecuta un bloque solo si se cumple una condición. Es la base de toda la lógica de un juego.
if (vidas <= 0)
{
Debug.Log("Game Over");
}
else if (vidas == 1)
{
Debug.Log("¡Última vida!");
}
else
{
Debug.Log("Te quedan " + vidas + " vidas");
}Operadores de comparación y lógicos#
Las condiciones se construyen con operadores que devuelven true o false:
| Operador | Significa | Ejemplo | ||||
|---|---|---|---|---|---|---|
== | Igual a | vida == 0 | ||||
!= | Distinto de | nombre != "Ana" | ||||
> < | Mayor / menor | puntos > 100 | ||||
>= <= | Mayor o igual / menor o igual | vida <= 20 | ||||
&& | Y (ambas ciertas) | enSuelo && !cansado | ||||
| `\ | \ | ` | O (al menos una) | `tocaLava \ | \ | tocaPincho` |
! | No (niega) | !estaVivo |
= asigna un valor (vida = 100). == compara dos valores (vida == 100). Confundirlos es el error de principiante más clásico: if (vida = 0) no compara, intenta asignar y da error.
Elegir entre muchos casos: switch#
Cuando comparas un mismo valor contra muchas opciones, switch es más limpio que una cadena de if:
switch (dificultad)
{
case "facil": enemigos = 3; break;
case "normal": enemigos = 6; break;
case "dificil": enemigos = 12; break;
default: enemigos = 6; break; // si no coincide ninguno
}C# permite una forma más compacta cuando solo asignas un valor:
int enemigos = dificultad switch
{
"facil" => 3,
"dificil" => 12,
_ => 6 // el _ es el "resto"
};Repetir: bucles#
Un bucle repite instrucciones. Elige según el caso:
for — cuando sabes cuántas veces#
// i va de 0 a 4 (cinco veces)
for (int i = 0; i < 5; i++)
{
Debug.Log("Enemigo número " + i);
}foreach — recorrer una colección#
foreach (string arma in inventario)
{
Debug.Log("Tienes: " + arma);
}while — mientras se cumpla algo#
while (energia > 0)
{
energia -= 10; // algo DEBE cambiar la condición
}Si la condición de un while nunca se vuelve falsa, el juego se cuelga (y con él el editor). Asegúrate siempre de que algo dentro del bucle acerca la condición a su fin (aquí, energia -= 10).
break y continue#
break: sale del bucle inmediatamente.continue: salta al siguiente ciclo sin terminar el actual.
foreach (Enemigo e in enemigos)
{
if (e.EstaMuerto) continue; // ignóralo y pasa al siguiente
if (e.EsJefe) { Debug.Log("¡Jefe encontrado!"); break; } // para de buscar
}Errores frecuentes#
- Confundir
=(asignar) con==(comparar). - Olvidar que
foreachno debe modificar la colección que recorre (añadir/quitar dentro da error). - Bucles
whilesin condición de salida (cuelgan el editor). - Anidar demasiados
if: a menudo se puede simplificar conswitcho extrayendo métodos.
Ponte a prueba#
Resumen#
if/else y switch toman decisiones; for, foreach y while repiten. Construye condiciones con operadores de comparación (==, <) y lógicos (&&, ||, !), no confundas = con ==, y garantiza siempre que los bucles tienen fin. Con esto ya puedes escribir la lógica de un juego. Siguiente paso: clases y objetos.