En este Tutorial de Unity aprenderemos un poco más sobre los “Métodos”, conoceremos su estructura, implementación y además haremos ejercicios con ellos.
Tutorial de Unity Nivel: Principiante.
9.1 Métodos.
Como lo explicábamos en el Tutorial “3. Conociendo nuestro Script”, los “Métodos” son un “grupo” o “bloque” de instrucciones específico dentro de un Clase. A este “grupo” o “bloque” se le asigna un nombre, y puede ser “llamado” en cualquier momento por otra instrucción presente en la misma Clase o en alguna distinta (cuando el Método es “llamado”, todas las instrucciones que contiene se comienzan a ejecutar).
9.2 Firma de un Método.
A continuación, veremos la forma más básica en la que se estructura un Método (también conocida como “Firma de un Método”), esta estructura o “Firma” se representa de la siguiente manera:
“Modificador de Acceso” “Tipo de Valor de Retorno” “Nombre del Método” (“Parámetros”) {
//Bloque de Código a Ejecutar
return “Valor de Retorno”;
}
Donde:
- El “Modificador de Acceso”, es muy similar al caso de las Variables, ya que este nos determina quien puede “llamar” a nuestro Método. Los valores más comunes para el “Modificador de Acceso” son:
- “public”: Significa que cualquier línea de código dentro de una Instancia de otra Clase (“Objeto”) puede mandar “llamar” a nuestro Método.
- “private”: Significa que solo lo podemos mandar llamar en alguna línea de código que esté dentro de la misma Clase que contenga a nuestro Método. Al igual que con las Variables, si dejamos vacío este campo, se dará por hecho que es “private”.
- El “Tipo de Valor de Retorno” (definido como “int”, “float”, “string”, “bool”, o algún Objeto), asigna el Tipo de Dato del Valor que el Método va a devolver a "la sección de código que lo mande llamar" (a parte de ejecutarse el contenido, nuestro Método puede enviar un valor específico de vuelta a quien lo mande llamar). En caso de no requerirse el enviar de vuelta un valor específico, en este campo se escribe “void”.
- El “Nombre del Método”, nos sirve para identificarlo (y por ende poder “llamarlo”). Como buena práctica, se usa la notación tipo “Pascal Case” (Mayúsculas en la primera letra de cada palabra).
- En la sección “Parámetros”, declaramos las variables que deseamos usar en nuestro Método y que sus valores sean definidos por quien lo mande llamar (cada declaración de variable debe estar separada por una “coma” “,”). En caso de no requerir algún valor definido por quien mande llamar a nuestro Método, este campo se puede quedar vacío.
- La sentencia return “Valor de Retorno”, aunque no se considera parte de la Firma de un Método, la integramos para poder explicarla dentro del contexto de las definiciones anteriores. Esta sentencia va ligada con el “Tipo de Valor de Retorno”, porque es aquí, donde definimos el Valor a Devolver a quien mande llamar a nuestro Método (escribiendo la palabra “return”, seguida del “Valor de Retorno”). Además, en la posición donde escribamos “return”, también estamos indicando que la ejecución del Método se debe terminar en ese mismo punto.
Los siguientes ejemplos nos ayudarán a comprender mejor lo antes descrito.
Ejemplo 01:
Crear un Método que solo pueda ser llamado dentro de su misma Clase, que no devuelva Valor alguno, que no requiera de “Parámetros” para su ejecución, que despliegue el mensaje “Mi Primer Método” en la Consola de Unity, y que lleve por nombre “UnMetodoSimple”.
private void UnMetodoSimple ( ) {
Debug.Log(“Mi Primer Método”); }
Nota: Para mandar llamar a este Método, tendríamos que escribir en alguna otra línea de código:
UnMetodoSimple ( );
// En la Consola de Unity veríamos: Mi Primer Método
También puede funcionar:
void UnMetodoSimple ( ) {
Debug.Log(“Mi Primer Método”); }
Nota: Para mandar llamar a este Método, tendríamos que escribir en alguna otra línea de código:
UnMetodoSimple ( );
// En la Consola de Unity veríamos: Mi Primer Método
Ejemplo 02:
Crear un Método que pueda ser llamado dentro de su misma Clase o desde Instancias de otras Clases, que no devuelva Valor alguno, que no requiera de “Parámetros” para su ejecución, que despliegue el mensaje “Mi Primer Método” en la Consola de Unity, y que lleve por nombre “UnMetodoSimple”.
public void UnMetodoSimple ( ) {
Debug.Log(“Mi Primer Método”); }
Nota: Para mandar llamar a este Método, tendríamos que escribir en alguna otra línea de código:
UnMetodoSimple ( );
// En la Consola de Unity veríamos: Mi Primer Método
Ejemplo 03:
Crear un Método que pueda ser llamado dentro de su misma Clase o desde Instancias de otras Clases, que devuelva el Valor Tipo “int” “14”, que no requiera de “Parámetros” para su ejecución, que despliegue el mensaje “Este Método Devuelve un Valor” en la Consola de Unity, y que lleve por nombre “UnMetodoQueDevuelve”.
public int UnMetodoQueDevuelve ( ) {
Debug.Log(“Este Método Devuelve un Valor”);
return 14; }
Nota: Para mandarlo llamar, necesitamos una línea de código que requiera el Valor proporcionado por nuestro Método:
int valorRequerido = UnMetodoQueDevuelve ( );
// Al ejecutar este código tendríamos como resultado: valorRequerido = 14
Ejemplo 04:
Crear un Método que pueda ser llamado dentro de su misma Clase o desde Instancias de otras Clases, que devuelva un Valor Tipo “float” (el área de un triángulo rectángulo), que requiera de dos “Parámetros” Tipo “float” e “int” (el valor de la “base” y el valor de la “altura” del triángulo) para su ejecución, que despliegue el mensaje “Este Método Calcula el Área de un Triángulo Rectángulo” en la Consola de Unity, y que lleve por nombre “AreaTrianguloRectangulo”.
public float AreaTrianguloRectangulo (float baseTriangulo, int alturaTriangulo) {
Debug.Log(“Este Método Calcula el Área de un Triángulo Rectángulo”);
float areaCalculada = (baseTriangulo * alturaTriangulo) / 2;
return areaCalculada; }
Nota: Para mandarlo llamar, necesitamos una línea de código que requiera el Valor proporcionado por nuestro Método (en esta misma línea de código asignamos los valores "11" y "7" necesarios para que el Método realice su cálculo):
float areaRequerida = AreaTrianguloRectangulo (11, 7);
// Al ejecutar este código tendríamos como resultado: areaRequerida = (11*7)/2 = 38.5
También puede funcionar:
public float AreaTrianguloRectangulo (float baseTriangulo, int alturaTriangulo) {
Debug.Log(“Este Método Calcula el Área de un Triángulo Rectángulo”);
return (baseTriangulo * alturaTriangulo) / 2; }
Nota: Para mandarlo llamar, necesitamos una línea de código que requiera el Valor proporcionado por nuestro Método (en esta misma línea de código asignamos los valores "11" y "7" necesarios para que el Método realice su cálculo):
float areaRequerida = AreaTrianguloRectangulo (11, 7);
// Al ejecutar este código tendríamos como resultado: areaRequerida = (11*7)/2 = 38.5
Cuando se llama a un Método, y este requiere de Valores para realizar su función (como en el caso anterior, los números “11” y “7”), a dichos Valores se les denomina “Argumentos”.
Ejemplo 05:
Crear un Método que solo pueda ser llamado dentro de su misma Clase, que no devuelva Valor alguno, que requiera de un “Parámetro” Tipo “string” (el nombre de un personaje de ficción) para su ejecución, que despliegue en la Consola de Unity el mensaje “Mi Personaje Favorito es: ” más el “Argumento” recibido, y que lleve por nombre “PersonajeFavorito”.
private void PersonajeFavorito (string personaje) {
Debug.Log(“Mi Personaje Favorito es: ” + personaje); }
Nota: Para mandar llamar a este Método, tendríamos que escribir en alguna otra línea de código:
PersonajeFavorito (“Kratos”);
// En la Consola de Unity veríamos: Mi Personaje Favorito es Kratos
También puede funcionar:
void PersonajeFavorito (string personaje) {
Debug.Log(“Mi Personaje Favorito es: ” + personaje); }
Nota: Para mandar llamar a este Método, tendríamos que escribir en alguna otra línea de código:
PersonajeFavorito (“Kratos”);
// En la Consola de Unity veríamos: Mi Personaje Favorito es Kratos
Como se puede observar, hay varias formas de crear Métodos que puedan realizar distintas acciones.
Si quieres conocer más a fondo sobre los Métodos, puedes visitar https://docs.microsoft.com/es-mx/dotnet/csharp/programming-guide/classes-and-structs/methods .
9.3 Métodos en Unity.
Ahora, realizaremos algunos ejercicios usando Métodos en Unity. Para ello, es necesario crear un nuevo Script llamado “MyMethods”, después hay que añadir este Script como un nuevo Componente del objeto “GameObject” en nuestra escena de trabajo y eliminar cualquier otro Componente tipo “Script” que contenga.
A continuación, vamos a crear el Método “HolaMundo” (que mandará el mensaje “Hola Mundo” a través de la Consola de Unity). A “HolaMundo” lo mandaremos llamar desde el Método “Start”.
Dentro de nuestro Script “MyMethods”, vamos a escribir lo siguiente:
void Start () { HolaMundo(); } void HolaMundo() { Debug.Log("Hola Mundo"); }
Nuestro Script se debe ver así:
Guardamos nuestro código, cambiamos a la ventana de Unity y ejecutamos nuestra escena.
Podemos ver que, nuestro Método “HolaMundo” se ha ejecutado correctamente.
Ahora vamos a crear un Método que devuelva un Valor Aleatorio Tipo “int” en el rango de “0” a “7” a quien lo mande llamar (en este caso, nuestro Método “Start” es quien lo llamará); para ello escribiremos:
void Start () { Debug.Log("Obtuvimos el Número: " + NumerosAleatorios() ); } int NumerosAleatorios() { int numeroObtenido = Random.Range(0,8); return numeroObtenido; }
Nota: Para generar nuestro número “aleatorio”, hacemos uso de la Clase “Random” y de su Método “Range”, el cual nos genera un número aleatorio que se encuentra entre un “valor mínimo” (en nuestro caso “0”) y un “valor máximo” (en nuestro caso “8”); el valor mínimo puede ser uno de los posibles resultados, pero el valor máximo no está incluido (por ello, como queremos un rango de “0 a 7”, debemos escribir “Random.Range(0,8)”).
Nuestro Script se debe ver así:
Si guardamos nuestro código, cambiamos a la ventana de Unity y ejecutamos, detenemos y volvemos a ejecutar nuestra escena varias veces, podremos ver los siguientes mensajes en la Consola de Unity:
Ahora vamos a crear un Método que Calcule el Área de un Rectángulo a partir de la información que suministre quien lo mande llamar (los Argumentos los enviará nuestro Método “Start”); para ello escribiremos:
void Start () { CalcularAreaRectangulo(7.7f, 4.4f); } void CalcularAreaRectangulo(float ladoA, float ladoB) { float areaRectangulo = ladoA * ladoB; Debug.Log("El Área del Rectángulo es: " + areaRectangulo); }
Nuestro Script se debe ver así:
Guardamos nuestro código, cambiamos a la ventana de Unity y ejecutamos nuestra escena.
Podemos ver que nuestro código se ejecuta correctamente, ya que dentro del Método “Start” se manda llamar a nuestro Método “CalcularAreaRectangulo” y este último realiza el Cálculo del Área (con los Argumentos proporcionados “7.7f” y “4.4f”), para finalmente escribir el resultado del cálculo en la Consola de Unity.
Los Métodos son fundamentales para desarrollar los códigos que darán vida a nuestros videojuegos. En el siguiente Tutorial de C Sharp (C#) en Unity, veremos como usar los Métodos con Acceso Tipo “public”.
Ejercicios.
Para reforzar lo aprendido, es necesario practicarlo, por ello intenta realizar los siguientes ejercicios:
- Usa el Script “MyMethods” que creaste en este tutorial.
- Usa el Método “Start” para mandar llamar a los Métodos que desarrolles.
- Crea un Método con nombre “MensajeBienvenida”, donde al momento de llamarlo, le enviemos como Argumento el nombre de una persona y el Método use ese valor para escribir en la Consola de Unity un mensaje dando la bienvenida.
- Crea un Método con nombre “PerimetroCuadrado”, donde al momento de llamarlo, le enviemos como Argumento la longitud de uno de los lados de un cuadrado y el Método use ese valor para calcular el perímetro y nos lo devuelva para que el Método “Start” lo imprima en la Consola de Unity.
Este Tutorial de Unity sobre los “Métodos” y su aplicación termina aquí. Acompáñanos en el siguiente tutorial donde aprenderemos más sobre el lenguaje de programación “C Sharp” (C#) en Unity.
Recuerda que, si quieres conocer más a fondo sobre el lenguaje de programación “C#” puedes visitar https://docs.microsoft.com/es-mx/dotnet/csharp/ ó bien, no dudes en contactarnos para cualquier duda o asesoría haciendo clic "Aquí"