Sentencias If en Unity

En este post aprenderemos acerca de las sentencias if y de las sentencias switch, parecido a if pero con múltiples opciones. Básicamente, una sentencia if realizará una acción si se cumple una condición previa.

Crearemos un nuevo script duplicando el ya existente mediante Ctrl+C y Ctrl+D. Le añadiremos «Ifs» en el nombre para diferenciarlos. Debemos acordarnos de modificar también el nombre en la parte del código «public class».

ifscript

Añadiremos este nuevo script arrastrándolo a nuestra esfera y eliminaremos el viejo abriendo el menú desplegable en la parte superior derecha y seleccionando la opción Remove Component.

addremovescript

Limpiaremos un poco el código de nuestro script antes de empezar de manera que quedará como se muestra en la siguiente imagen.

new

Debemos tener en cuenta que después de la sentencia if se ejecutará únicamente la primera acción que venga después hasta el primer punto y coma. Para ejecutar un número mayor de acciones dependiendo de si se cumple o no la condición de la sentencia if, tendremos que emplear llaves («{ }»). Estas llaves se colocarán al principio, justo después de la sentencia if, y al final de las acciones a realizar. Por ejemplo, añadamos un «Debug.Log(«hola»)» para comprobarlo. Al pulsar la barra espaciadora nuestra esfera saltará y nos saldrá el mensaje «hola».

llaves

Mediante el uso de estas llaves también podemos introducir sentencias if dentro de otras sentencias if. Por ejemplo, en la siguiente imagen el código mostrado mostrará un mensaje periódicamente mientras la variable «canJump» sea igual a true y, además, mostrará el mensaje «hola» si pulsamos la barra espaciadora que hace saltar a nuestra esfera.

algo

Los símbolos a utilizar en las condiciones a cumplir dentro de las sentencias if son: == (igual), != (no igual), < (menor que), > (mayor que), <= (menor o igual que), >= (mayor o igual que), && (y), || (o). De este modo si queremos escribir una sentencia if que haga algo si x+y = 10 ó x <= 5 quedaría algo como » if ( x + y == 10 || x <= 5 ) «. Podemos incluso usar paréntesis dentro de la condición. Añadamos al anterior ejemplo que sea necesario que dentro de la condición x <= 5 se deba cumplir además que y >= 0. Nos quedaría entonces » if ( x + y == 10 || ( x <= 5 && y >= 0 ) ) «. «&&» implica que ambas condiciones han de cumplirse, mientras que «||» indica que basta con que se cumpla una de las dos. Por último, significará lo mismo » canJump == false » que » !canJump «.

Si en caso de no cumplirse nuestra condición en la sentencia if deseamos que se realice alguna acción recurriremos a «else». En las sentencias de tipo if-else primero se comprobara si se cumple la condición de if. Si se cumple se realizarán las acciones dentro de la sentencia if, pero de no cumplirse dicha condición se realizarán las acciones dentro de la sentencia else. En nuestro ejemplo haremos que en caso de que canJump no sea true se muestre el mensaje «Necesitas cambiar canJump a true».

else

A continuación aprenderemos como funcionan las sentencias switch, que es básicamente un selector. Emplearemos un switch para seleccionar la velocidad de salto de nuestra esfera, para ello crearemos una variable (tipo int por ejemplo) que servirá de selector. La sentencia switch será «switch(variable)» , poniendo entre los paréntesis la variable según la cual se seleccionará una opción u otra dentro de switch. Crearemos la sentencia switch dentro de «void Start ( )» para que esta selección se realice únicamente al iniciar el juego. A continuación dentro de llaves incluiremos todos los casos que queramos que pueda seleccionar. En cada caso se empezará poniendo «case <valor de la variable>» poniendo en «valor de la variable» el valor para el cual realizaremos las siguientes acciones, puede ser cualquiera que deseemos. A continuación, sin necesidad de usar llaves, escribiremos todas las acciones que se deben realizar en este caso y se finalizará el caso con un «break;». Posteriormente se escribirá el siguiente caso del mismo modo. En nuestro ejemplo si seleccionamos un valor igual a 1 para la variable creada (int number) jumpSpeed adquirirá un valor igual a 1000 al inicio del juego (sin importar qué valor le hayamos puesto previamente), para number = 2 jumpSpeed será 2000 y para number = 10 jumpSpeed será 3000.

swtich

Un comentario en “Sentencias If en Unity

  1. Post con explicaicones claras. Supongo que el el switch permitirá poner una acción por defecto, en caso que no se cumpla ninguna de las condiciones. Gracias.

    Me gusta

Deja un comentario