Marc Lidon Mañas

Unity 3D


Скачать книгу

crear una función debemos hacerlo de la siguiente manera:

void nombredelaFuncion(){//Aqui ponemos la acción que queremos que ejecute.}

      Voy a seguir con el ejemplo de las tablas de multiplicar para que se entienda cómo podemos crear una función que me muestre la tabla de multiplicar que nosotros deseemos. Crea un nuevo script y llámalo Funciones.cs y añádelo al objeto que tengas en escena.

Script: Funciones.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Funciones : MonoBehaviour{public int tabla;private int resultado;private int valor;void CreadorTablas (){for(valor=0; valor<= 10; valor++){resultado = valor * tabla;Debug.Log (valor+” x “+tabla+” = “+resultado);}}void Start(){this.CreadorTablas();}}
Después de declarar las variables hemos creado una función con el nombre de CreadorTablas, puedes ponerle el nombre que quieras. Después en su interior hemos creado el loop for que anteriormente habíamos visto para crear una tabla de multiplicar según el valor.Para llamar a la función debemos poner el nombre de la función como te muestro en el script dentro de la otra función Start.

      Si no sabes modelar en 3d no te preocupes porque este libro viene acompañado de material adicional para que puedas realizar los proyectos. En el caso de que quieras realizar algún proyecto distinto puedes descargar del Asset Store de Unity recursos en donde encontraras material gratuito y de pago.

      Los Arrays son matrices que nos permiten almacenar múltiples objetos en una misma variable. Esta clase solo se encuentra en Javascript pero podemos utilizar en C# con las Buitlin arrays (que son nativas de .Net). Este tipo de Arrays son muy rápidas pero no pueden re-dimensionarse.

      A continuación te muestro un ejemplo muy básico de cómo podemos utilizar estas Builtin arrays:

Script: Arrays.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Arrays : MonoBehaviour{public string[] lista;void Start(){this.lista= new string[4]{“Juan”,”Maria”,”Antonio”,”Lurdes”};foreach (string nombres in lista){Debug.Log(nombres);}}}
Primero declaramos una variable de tipo Builtin Array al que le damos el nombre de lista. Si te fijas verás que para decirle que el tipo primero ponemos el tipo de variable que será (int, string, float..) seguido de corchetes y luego le damos el nombre que deseamos.Dentro de la función Start le damos valores a la variable lista; para ello en C# siempre debemos añadir valores de la siguiente manera new string y entre corchetes puedes poner el numero de elementos o valores que va a tener el Builtin Array, seguido abrimos llaves y entre comillas ya que es de tipo string ponemos los nombres separados por comas.Para mostrar la lista he utilizado un foreach asignadole una variable de tipo string llamada nombre para mostrar cada elemento del Builtin Array de este modo cuando ejecutes el juego en la consola te mostrara todos los nombres de la lista.

      A continuación te muestro como deberías verlo en la ventana Inspector y en la consola.

      Fig. 5.12

      Hasta ahora el tipo de programación que hemos visto es secuencial es decir empezaba arriba y Unity lo ejecutaba de arriba a bajo. En la programación orientada a objetos (POO) es un poco mas compleja en el sentido de que esta basada en la comunicación entre objetos.

      Para entender mejor este concepto vamos a realizar una serie de practicas.

      1# Atributos

      Vamos a crear una tabla de récords en donde cada jugador pueda introducir el nombre, y que nos diga el número de partidas jugadas, el tiempo invertido de juego y si el jugador está activo o no.

Player 1Player 2Player 3
Nombre stringpartidas inttiempo floatActivo boolNombre stringpartidas inttiempo floatActivo boolNombre stringpartidas inttiempo floatActivo bool

      Crea un nuevo proyecto llamado Programacion2 y crea una escena llamada clases. Crear un script C# con nombre infoPlayer. Intenta que el proyecto tenga sus carpetas con los scripts y las escenas ordenadas.

      Crea un objeto vacío llamado TablaRecords y le ponemos un script con nombre tablaRecords. Ahora creamos un nuevo script sin añadirlo a ningún sitio y le ponemos el nombre de infoPlayer. Abrimos este script y le ponemos las siguientes variables.

Script:infoPlayer
using System.Collections;using System.Collections.Generic;using UnityEngine;[System.Serializable]public class infoPlayer{public string nombre;public int partida;public float tiempo;public bool activo;}
En primer lugar, debes borrar todo lo que viene por defecto puesto que vamos a crear una clase que nos proporcione información del player y luego para que podamos ver las variables y los atributos en el inspector de Unity debemos escribir entre corchetes System.Serializable.El siguiente paso es crear una clase pública para poder acceder desde cualquier script y le ponemos el mismo nombre.Ahora solamente declaramos las variables que necesitamos; nombre partida tiempo y activo.
Script:tablaRecords
using System.Collections;using System.Collections.Generic;using UnityEngine;public class tablaRecords : MonoBehaviour{public infoPlayer player1;public infoPlayer player2;void Start (){this.player1.nombre = “Paco”;this.player1.partida = 8;this.player1.tiempo = 6.25f;this.player1.activo = true;this.player2.nombre = “Maria”;this.player2.partida = 2;this.player2.tiempo = 4.2f;this.player2.activo = false;Debug.Log (player1.nombre+”, “+ player1.partida +”, “+ player1.tiempo+” , “+ player1.activo);Debug.Log (player2.nombre+”, “+ player2.partida +”, “+ player2.tiempo+” , “+ player2.activo);}
Este script es el que hemos agregado al objeto en Unity. Desde aquí vamos a acceder a la clase infoPlayer para crear nuestros players.Si te fijas en la primera variable utilizo el nombre de la clase infoPlayer y le doy un nombre en este caso player1. Player1 es un nuevo objeto de la clase infoPlayer.Ahora en la función Start ya puedo acceder a sus atributos (es decir sus variables) para ello ponemos el nombre de la variable punto y si todo es correcto en monodevelop te aparecen los atributos. Escoge el que necesites y le das el valor que quieras,
En este ejemplo he puesto el player 1 y el player 2 a ti te dejo el 3.Para finalizar puedes mostrar en la consola los atributos de la clase. Recuerda que te aparecerán los valores cuando ejecutes el juego.

      Fig. 5.13

      Si ejecutamos el juego veremos que en la consola aparecen los atributos y en la ventana Inspector las cajas de texto se llenan con los valores que les hemos asignado.

      Fig. 5.14

      2# Métodos

      Si seguimos con el ejemplo anterior, también podemos crear funciones dentro de las clases. Para esta actividad vamos a crear una función que nos muestre por consola los atributos de la clase, para no tener que escribir tanto.

Script:infoPlayer
using System.Collections;using System.Collections.Generic;using UnityEngine;
[System.Serializable]public class infoPlayer{public string nombre;public int partida;public float tiempo;public bool activo;public void MuestraInfo(){Debug.Log (“Nombre del jugador: “ + nombre);Debug.Log (“Numero de Partidas: “ + partida);Debug.Log (“Tiempo de juego: “ + tiempo);Debug.Log (“Actividad actual: “ + activo);}}
Creamos a continuación de las variables una función con el nombre que quieras en este caso es MuestraInfo y dentro escribimos varios Debug.Log con los mensajes y el nombre de la variable que deseamos que se muestren

      Ahora que hemos creado este método en la clase solamente debemos substituir en el script tablaRecords los debugs Logs por lo siguiente.

Script:tablaRecords
using System.Collections;using System.Collections.Generic;using UnityEngine;public class tablaRecords : MonoBehaviour{public infoPlayer player1;public infoPlayer player2;void Start (){this.player1.nombre = “Paco”;this.player1.partida