Читать книгу Unity 3D - Marc Lidon Mañas - Страница 16

Оглавление

1. Introducción

Este es el primer capítulo en donde vas a empezar a escribir código y tus primeros scripts. Este capítulo se enfoca en darte una base introductoria para que te resulte más sencillo entender los próximos capítulos en los que se empieza a programar el movimiento de nuestro personaje y en donde empezamos a utilizar la API de Unity.

Creando nuestro primer Script

Crea un proyecto nuevo en 3D con el nombre que quieras, por ejemplo capítulo 5. En la ventana Project vamos a crear dos carpetas una para guardar nuestras escenas y la otra para guardar nuestros scripts como te muestro en la imagen siguiente.


Fig. 5.1

Ahora vamos a crear un script dentro de la carpeta Scripts que hemos creado anteriormente. Seleccionamos la carpeta Scripts y hacemos clic con el botón derecho del ratón y seleccionamos Create > C# Script, automáticamente aparecerá un script con el nombre por defecto NewBehaviourScript.cs.


Fig. 5.2

Si quieres puedes cambiarle el nombre al script. A continuación hacemos doble clic encima del script y se nos abrirá el programa Monodevelop que nos servirá para editar nuestro script. En esta obra se ha transcrito todos los scripts para mayor entendimiento del lector y se mostrarán siempre en este recuadro que te muestro a continuación.

Script: NewBehaviourScript.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;
public class NewBehaviourScript : MonoBehaviour{// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}}

El primer bloque que encontramos en la parte de arriba:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

Son necesarias porque es la forma que tenemos en C# de llamar directamente al Engine de Unity y para que se utilicen las colecciones genéricas para empezar a programar. Normalmente cuando creas un script en Unity ya se crean automáticamente, pero en algunos casos deberemos ser nosotros mismos los que agreguemos alguna otra colección.

public class NewBehaviourScript : MonoBehaviour

Este código que vemos es el nombre de la clase que siempre debe ser el mismo que el nombre del script y después de los dos puntos nos indica a que clase pertenece y en este caso y siempre por defecto pertenecerá a MonoBehaviour. Esta clase debe contener en su interior todo el contenido de nuestro script o dicho de otra manera el comportamiento que queremos que se ejecute.

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

}

En este bloque o parte del script es donde declararemos variables y utilizaremos nuestras funciones. En el script tenemos dos comentarios que sirven para informar y siempre van después de // y dos funciones (void Start) y (void Update) que veremos a continuación para que sirven.

Void Start

Para entender cómo funciona vamos a crear un mensaje para cada función que se va a mostrar por la ventana de Consola en Unity. Cuando queremos imprimir un mensaje debemos escribir la palabra Debug.Log(“”); Dentro del paréntesis de momento vamos a escribir entre comillas cuándo queremos poner texto, más adelante veremos qué opciones tenemos. A continuación te dejo el código que me gustaría que probarás.

Script: NewBehaviourScript.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class NewBehaviourScript : MonoBehaviour{void Start (){Debug.Log(“Nuestro primer mensaje”);}void Update (){Debug.Log(“Este mensaje se va a repetir infinitas veces!!”);}}

Una vez hayas escrito el código en tu script debes guardar el archivo seleccionando en la barra de herramientas principal File > Save. Ahora minimizamos el editor Monodevelop y nos dirigimos a Unity. Debes localizar la ventana Console en la interfaz si no lo ves puedes abrir esta ventana accediendo al menú principal en la opción Window > Console. Se abrirá la ventana Consola como te muestro en la siguiente imagen.


Fig. 5.3

Ahora para que nuestro script funcione debemos agregarlo a un objeto en la escena, como no tenemos ninguno debemos crear un GameObject vacío, o por defecto el que tú quieras y arrastrar el script encima del objeto dentro de la ventana jerarquía o con el objeto seleccionado arrastrando el script encima de sus componentes como te muestro a continuación en la siguiente imagen:


Fig. 5.4

Bien agregado el script ejecutamos el juego haciendo clic en play y pasados unos segundo veremos el siguiente mensaje en consola:


Fig. 5.5

El primer mensaje que se imprime en la consola es el que estaba dentro de la función Start si te fijas verás que solo aparece una vez. El segundo mensaje se repite en este caso 146 veces. Verás que he marcado la opción Collapse para que el segundo mensaje que estaba dentro de la función Update no me salga repetido y solamente se muestre una vez con el numero de repeticiones al lado.

2. Crear y manipular variables

Las variables son contenedores de información, por ejemplo imagínate que tienes tres amigos: Juan, Antonio y María. Ahora imaginate que utilizamos un nombre en clave para referirnos a estos tres amigos. El nombre clave es “jam” que son las letras del principio del nombre. Bien cada vez que digas jam estarás refiriéndote a tus 3 amigos, eso mismo es lo que hacemos en programación, damos un nombre fácil de recordar a un valor complejo.

Cuando creamos variables decimos que las estamos declarando y existen varios tipos de variables según el contenido que queremos guardar. Para declarar una variable en C# primero debemos decir si es pública o privada;

Las variables publicas nos permiten comunicar entre los scripts del mismo GameObject y otros GameObjects y se verán publicadas en la ventana Inspector de Unity.

Las variables privadas también nos permiten comunicar entre los scripts del mismo u otros GameObjects pero no se verán publicadas en la ventana Inspector de Unity.

Public/private+ tipo de variable + nombre de la variable;

Para el ejemplo en Unity crea un nuevo GameObject (un cubo) luego crear un nuevo script y llámalo Variables.cs y añadelo al nuevo GameObject:

Script: Variables.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Variables : MonoBehaviour{public int edad = 56;public string nombre = “Oscar”;public float peso = 1,85f;void Start (){Debug.Log(“Mi nombre es: “+this.nombre+” tengo “+this.edad+” y mido “+this.peso);}}
Las variables declaradas son:•int para valores enteros.•string para valores de cadena de textos siempre entre comillas.•float para valores decimales y el numero debe finalizar con la letra f.Para mostrar en consola las variables se utiliza un Debug.Log y dentro del paréntesis se concadena con signos de suma con el nombre de las variables. El término this se utiliza para hacer referencia a la variables del objetos que tiene el script.

Unity nos permite ver las variables que hemos declarado en la ventana inspector porque las hemos declarado públicas, como te muestro en la imagen siguiente:


Fig. 5.6

En la imagen anterior, seleccionando el objeto al que le hemos añadido el script nos muestra las variables que hemos declarado públicas en la ventana inspector. Si ejecutamos el juego haciendo clic a play en la consola debería aparecer el mensaje que hemos escrito dentro de la función Start.


Fig. 5.7

3. Trabajar con operadores aritméticos

Los operadores aritméticos nos permiten realizar operaciones con nuestras variables es decir si tenemos una variable energía = 100 y un enemigo te dispara con un arma de daño= 50 tu energía se le restará 50.

A continuación te muestro todos los operadores que necesitas para hacer tus operaciones. Primero cómo asignamos una operación a nuestras variables:

Sumax = x + y;Módulox = x % y;
Restax = x - y;Añadir 1++x
Multiplicaciónx = x * y;Quitar 1--1
Divisiónx = x / y;

Vamos a crear un ejemplo para ver como podemos utilizar estos operadores para ello crearemos un nuevo script en C# llamado Aritmeticos.cs (El nombre procura que sea sin acentos y sin la ñ).

Debemos calcular la velocidad que tiene nuestro objeto sabiendo la distancia recorrida y el tiempo que hemos utilizado.

Script: Aritmeticos.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Aritmeticos : MonoBehaviour{private float velocidad;public float tiempo = 5,1f;public float distancia = 8.1f;void Update (){this.velocidad= this.distancia/this.tiempo;Debug.Log(“Mi velocidad es de: “+this.velocidad);}}
Las variables declaradas son todas float y públicas excepto la de velocidad porque quiero que solo se muestre en consola. Le hemos dado valores a la variable tiempo y a la variable distancia.He creado la operación dentro de la función Update para que cuando ejecutemos el juego y cambiemos los valores de tiempo y de distancia, Unity calcule de nuevo los nuevos valores.Para mostrar en consola el resultado de velocidad utilizamos un Debug.Log.

En Unity podemos borrar el componente script anterior y añadir este nuevo al cubo. El resultado debería verse de la siguiente manera.


Fig. 5.8

4. Operadores lógicos y de comparación

Los operadores lógicos sirven para obtener dos resultados verdadero o falso estos resultados se les conoce también como valores Booleanos. A continuación te muestro las operaciones:

&&And (y)La operación seria verdadero y falso = falso
||Or (o)La operación seria verdadero o falso = verdadero
!Not (no)La operación seria verdadero no = falso

No tienes que memorizarlo simplemente debes saber que son y para que sirven. A continuación te muestro los operadores de comparación que nos permiten comparar valores en general.

==igualdad5==5
!=desigualdad4!=0
>Mayor que10>2
<Menor que2<10
>=Mayor o igual queX >= 10 // La x puede ser 10 o mayor que 10
<=Menor o igual queX <= 10 // La x puede ser 10 o menor que 10

Este apartado es una especie de esquema en donde te muestro los operadores lógicos y de comparación en el siguiente apartado vamos a ponerlos en practica.

5. Crear declaraciones lógicas con if - else

En la vida diaria tomamos decisiones a cada momento un café (solo o con leche, con azúcar o sacarina etc). Según nuestra toma de decisiones suceden acontecimientos, es decir, imagínate tu personaje en una gruta con dos posibles salidas; la salida de la izquierda o la salida de la derecha.

Resulta que si escoges la de la derecha encuentras el tesoro y si escoges la salida izquierda se te come un dragón. De eso se encarga la declaración if, de comparar situaciones o valores y darnos un resultado según nuestra decisión.

Para declarar un if debemos escribirlo de la siguiente forma:

if (x>0){Lo que sucede si se cumple la comparación del if ;}else{Si no se cumple el if pasara esto ;}

Vamos a crear un script llamado Comparaciones.cs. En este ejemplo vamos a comparar las mejores puntuaciones de un juego. Tenemos 1 jugadores con 1 puntuación que podremos variar. Si el resultado de estas puntuaciones es >=100 el resultado es Experto si el resultado es >= 50 y <100 el resultado es intermedio y si no se cumple lo anterior es principiante.

Script: Comparaciones.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Comparaciones : MonoBehaviour{private int puntuacion = 35;// Puedes poner el valor que quierasvoid Update (){if (puntuacion >= 100){Debug.Log (“Experto”);} else if (puntuacion < 100 && puntuacion >= 50){Debug.Log (“Intermedio”);}else{Debug.Log (“Principiante”);}}}

El siguiente script cuando lo ejecutes en Unity podrás variar la puntuación y en la consola te irán apareciendo los distintos resultados posibles.


Fig. 5.9

6. Crear declaraciones con switch

El switch nos permite tomar de una sola variable su valor y realizar múltiples operaciones dependiendo del valor de la variable.

Para declarar un switch debemos hacerlo de la siguiente manera:

Switch (variable){case “valor1”:Debug.Log(“Sucede algo”);break;case “valor2”:Debug.Log(“Sucede algo”);break;default:break;}

Vamos a realizar un ejercicio muy básico para mostrar las posibilidades de switch. Imagínate que tenemos dos valores para una variable el valor 1 y el valor 2 y queremos que cuando tengamos el valor 1 nuestro personaje tenga una pistola y cuando la variable tenga el valor 2 tenga una escopeta. Para realizar el ejercicio crea un script con el nombre Switch.cs y lo añadimos al cubo, asegúrate de borrar el otro script de la ventana inspector para que solo tenga este script.

Script: Switch.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Switch : MonoBehaviour{public int arma;void Start (){switch (arma){case 1:Debug.Log(“Pistola”);break;
case 2:Debug.Log(“Escopeta”);break;default:Debug.Log(“Nada”);break;}}}

En la ventana inspector puedes poner el valor uno y te en la consola te mostrará una pistola y si pones el valor 2 te mostrará escopeta, si pones un valor distinto te mostrará el mensaje por defecto que es nada.


Fig. 5.10

7. Trabajar con loops

Un loop es un bucle una repetición de una condición o serie de condiciones un cierto número de veces o hasta que se cumpla una alguna de estas condiciones. Tenemos que tener cuidado con los loops porque si nos equivocamos podemos crear un loop infinito y bloquear Unity.

While

El primero de los loops que vamos a ver es While que nos permite crear un bucle hasta que se cumple la condición.

Variable = 0;while (variable <= 10){Debug.Log(variable);variable++;}
Primero declaramos una variable con un valor en este caso 0.Le decimos a while que la condición es que mientras el valor de la variable sea menor o igual a 10 nos muestre por consola el valor de variable pero para que no sea un bucle infinito el valor de la variable tiene que incrementarse 1 cada vez por eso se le añade variable++

#Ejemplo1 para Unity

Crea un script con el nombre While.cs. Vamos a crear un script que nos muestre las tablas de multiplicar.

Script: While.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class While : MonoBehaviour{private int valor = 0;public int tabla;private int resultado;void Start (){while (valor <= 10){resultado = valor * tabla;Debug.Log (valor+” x “+tabla+” = “+resultado);++valor;}}}

Ahora si vamos a Unity debemos poner el valor de la tabla que queremos que nos muestre por consola por ejemplo la tabla del 4 y al ejecutar el juego en la consola se nos mostrará la tabla del cuatro.


Fig. 5.11

For

El loop for nos permite definir su valor, su limite y su incremento. Es otro loop que podemos utilizar, para escribirlo debemos hacerlo de esta manera:

for(x=0; x<= 10; x++){Debug.Log (x);}
El for contiene una variable x que es igual a 0 en un principio, después tiene la condición de que x tiene que ser menor o igual a 0 y para finalizar este valor se ira incrementando. Cada vez que se cumpla se mostrara en consola el valor de x.Esto quiere decir que se repetirá 10 veces y que por consola se nos va a mostrar los valores 0,1,2,3,4,5,6,7,8,9,10. El valor 10 es el ultimo ya que el valor 11 sería mayor que 10 y no se cumpliría la condición de x<=10.

Ahora que sabemos como utilizar el loop for vamos a realizar el mismo ejemplo que con el loop While de manera que crearemos un script que nos muestre las tablas de multiplicar según el valor de la tabla que queramos.

Script: For.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class For : MonoBehaviour{public int tabla;private int resultado;private int valor;void Start (){for(valor=0; valor<= 10; valor++){resultado = valor * tabla;Debug.Log (valor+” x “+tabla+” = “+resultado);}}}

El resultado debería ser exactamente igual al del ejemplo While descrito anteriormente.

8. Crear y llamar funciones

Ahora que sabemos qué son las variables, cómo podemos operar con ellas tomar decisiones y crear repeticiones según nuestras decisiones, vamos a comprimirlo todo en una función que nos permite contener múltiples acciones dentro, y para ejecutarla solamente necesitamos el nombre de la función.

Para 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.

9. Entender qué son los Arrays

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

10. Mi primera clase

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 = 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;this.player1.MuestraInfo(); this.player2.MuestraInfo();}}

3# Constructor básico

Creamos funciones dentro de una clase para que se ejecuten cuando creamos un objeto de esa clase; o, dicho correctamente, se instancia un objeto de esa clase.

En los ejemplos anteriores hemos creado 2 players y ahora en el script infoPlayer vamos a crear el constructor de la clase, que nos va a informar de que se ha creado un nuevo objeto de esta clase.

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 infoPlayer(){Debug.Log(“Se ha creado un objeto de la clase infoPlayer”);}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);}}
Dentro de la clase; debemos crear después de los atributos una función pública con el mismo nombre de la clase dentro ponemos un mensaje.

A continuación vamos a crear los objetos de la clase infoPlayer.

Script:tablaRecords
using System.Collections;using System.Collections.Generic;using UnityEngine;public class tablaRecords : MonoBehaviour{public infoPlayer player1 = new infoPlayer();public infoPlayer player2 = new infoPlayer();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;this.player1.MuestraInfo();this.player2.MuestraInfo();}}
Para crear un nuevo objeto diremos que la variable es igual a new seguido del nombre del constructor.Cuando ejecutes el juego en Unity si todo es correcto debe de mostrarte el mensaje que hemos escrito dentro del constructor.

3# Constructor inicializando valores.

También podemos crear los objetos con valores directamente, esto quiere decir que cuando creamos el player1 ya le podemos poner los valores directamente y evitamos tener que escribir tanto código. Para ello vamos al script de la clase y creamos escribimos lo siguiente:

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 infoPlayer(){Debug.Log(“Se ha creado un objeto de la clase infoPlayer”);}public infoPlayer(string n, int p, float t, bool a){this.nombre = n;this.partida = p;this.tiempo = t;this.activo = a;}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);}}
Ahora tenemos el constructor pero con una serie de argumentos.Dentro del constructor guardamos estos argumentos dentro de las variables que son los atributos que necesitaremos para crear un objeto de esta clase.
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 = new infoPlayer(“Paco”,8,6.25f,true); this.player2 = new infoPlayer(“Maria”,2,4.2f,false);this.player1.MuestraInfo();this.player2.MuestraInfo();}}
Nuestro script tablaRecords quedará de la siguiente forma,

Hasta aquí esta pequeña introducción a la programación en C#, no quiero entrar en muchos detalles de programación básica, sino explicarte un poco las reglas del juego. Estas son algunas de las habilidades que debes entender y utilizar a pesar de que te equivoques, porque en los próximos capítulos empezaremos a ver cómo este lenguaje nos permite controlar objetos y que estos interactúen. La estructura que debes comprender cuando hablamos del concepto, (principalmente abstracto), de programación es:

•Dispones de unas variables para almacenar información compleja.

•Puedes realizar operaciones, comparar valores y tomar decisiones con estas variables.

•Puedes automatizar con bucles operaciones que se repiten continuamente.

•Puedes agruparlo todo en una función para utilizarla más adelante.

•Puedes crear tus propias clases que encapsula todo lo anterior.

En el próximo capítulo empezaremos a poner en practica estos conceptos tan abstractos para que empieces a concretar tus objetivos.

Unity 3D

Подняться наверх