Tutorial Unity: cómo usar los If Statements
La sentencia If en Unity
Dentro de nuestro código vamos a tener la necesidad de querer comparar diferentes condiciones para realizar acciones si esas condiciones se cumplen. Este es un funcionamiento básico en cualquier código de programación, pero además es un funcionamiento básico en nuestro día a día, es decir, nosotros mismos actuamos de una manera diferente según si se cumplen una serie de condiciones. Por ejemplo si ponemos agua a hervir para hacernos una infusión, estamos comparando constantemente si el agua está hirviendo, si el agua no está hirviendo todavía dejamos el agua en el fuego más rato, si el agua ya está hirviendo la retiramos del fuego. Estos “si” son estructuras condicionales que se pueden traducir directamente. Hablemos un poco sobre qué tipo de comparaciones podemos realizar dentro de nuestras sentencias If.
== igual que
!= diferente que
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
Éstas son las diferentes condiciones que podemos comparar dentro de nuestras sentencias pongamos el ejemplo sobre el que estábamos hablando antes, el ejemplo del agua hirviendo:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//creamos una variable donde tendremos la temperatura actual en grados
private float temperaturaActual;
//creamos una variable donde guardamos la temperatura de ebullición del agua
private float temperaturaEbullicion = 100;
void Update(){
//comparamos si la temperatura actual ha llegado a la de ebullición
if( temperaturaActual >= temperaturaEbullicion) {
//quitaría el agua del fuego
}
{
Como podemos ver la estructura consiste en una sentencia if con la condición que se debe cumplir escrita entre paréntisis y todas las acciones que se tienen que realizar si se cumple dicha condición quedan agrupadas entre corchetes.
Pongamos el caso que nuestro código gestiona una máquina que se dedica a calentar el agua hasta los 100º centígrados y que una vez llegada a esa temperatura se debe parar, pero mientras no se haya llegado debe seguir calentando el agua, según el ejemplo anterior tendríamos que:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//creamos una variable donde tendremos la temperatura actual en grados
private float temperaturaActual;
//creamos una variable donde guardamos la temperatura de ebullición del agua
private float temperaturaEbullicion = 100;
void Update(){
//comparamos si la temperatura actual ha llegado a la de ebullición
if( temperaturaActual >= temperaturaEbullicion) {
//quitaría el agua del fuego
DejarDeCalentar();
} else {
SeguirCalentando();
}
}
La sentencia else (si no) nos permite especificar qué acciones se tienen que realizar si no se cumple la condición especificada en la sentencia if que hemos definido anteriormente.
Una de las cualidades que podemos encontrar en las estructuras de sentencias es que podemos usarlas encadenando sentencias. Aunque según como quede toda la estructura de las sentencias sería recomendable usar otro tipo de sentencias vamos a ver cómo podemos definir esas estructuras. Pongamos por ejemplo una estructura que hace una cosa diferente dependiendo del color del semáforo:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//creamos una variable donde guardar el nombre del color del semáforo
private string colorSemaforo;
void Update(){
if( colorSemaforo == “rojo”){
PararPeatones();
} else if( colorSemaforo == “amarillo”){
FrenarPeatones();
} else {
AcelerarPeatones();
}
}
Con la sentencia else if podemos decir que si no pasa la condición anterior se compare con una nueva condición y finalizando con la sentencia else podemos definir lo que se hará en el resto de situaciones.
Por último vamos a ver qué pasa cuando queremos comparar varias condiciones a la vez, dentro de los operadores condicionales encontramos unos operadores que nos permiten realizar condiciones mucho más complejas como son:
&& y
|| o
Partiendo del primer ejemplo, si queremos que nuestra máquina de calentar agua tiene que mantener la temperatura del agua entre 50 y 80 grados. Podríamos hacer el siguiente código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//creamos una variable donde tendremos la temperatura actual en grados
private float temperaturaActual;
void Update(){
//si la temperatura actual está dentro del margen
//es mayor que 50 Y menor que 80
if( temperaturaActual > 50 && temperaturaActual < 80) {
IntentarMantenerTemperatura();
//si la temperatura actual está por encima del margen
} else if(temperaturaActual > 80) {
EnfriarAgua();
//en cualquier otro caso (solo puede ser que esté por debajo)
} else {
CalentarAgua();
}
}
En el caso de que queramos que nuestra máquina nos avise siempre que la temperatura se salga de los márgenes que hemos comentado antes podríamos tener el código escrito de la siguiente manera:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//creamos una variable donde tendremos la temperatura actual en grados
private float temperaturaActual;
void Update(){
//si la temperatura está fuera del margen
//es menor que 50 o es mayor que 80
if( temperaturaActual < 50 || temperaturaActual > 80) {
AvisoAlUsuario();
} else {
NoAvisoAlUsuario();
}
}
¿Ves útil el uso de sentencias if en el código? Dejanos tu comentario