martes, 24 de febrero de 2015

Crea un videojuego con Unity3d (Programación VI GameManager)

Hoy voy a mostraros ¿Cómo hacer un GameManager?
Como siempre aquí tenéis el primer artículo para seguir el orden de todos estos tutoriales. 

Antes de empezar...
¿Qué es un Game Manager?

Así en general es aquel "ente" que lo maneja todo sobre el juego...  
Es el objeto que va a tener el trabajo pesado, organizar y dividir las tareas para que al engine le sea más fácil trabajar y no se lagge. 
Normalmente se hace un Manager para cada aspecto del juego, para suavizar aún más el flujo de trabajo, es decir: GameManager, AudioManager, GuiManager...

¡Al lío que hoy es visto y no visto! 

Para crear un GameManager:

Nosotros vamos a crear un objeto vacío pero podría ser perfectamente cualquier otro objeto.

1- Creamos un empty  (objeto que no se va a renderizar en juego pero que tendrá algo que hacer para que este funcione correctamente)
2- Le damos el nombre de GameManager 
3- Añadimos una Script con el mismo nombre.


En la script GameManager ponemos una variable pública llamada puntos de tipo "int" (integer)
A continuación una función (también pública) que llamé Puntuation (ya que en el Monodev no permite poner tildes una buena opción es escribir en inglés o algo que entendamos pero que no lleve tildes).

En esta función lo único que hacemos es aumentar en uno el valor de la variable (puntos++) eso significa que coge el valor que tiene dicha variable y le suma UNO al valor anterior.

Una vez lo a sumado lo imprimimos por consola. Debug.Log ("Puntos : " + puntos); fijaros en las comillas (" ") Lo que está en verde lo escribirá tal cual en la consola PERO lo que está sin comillas imprimirá el valor (sea lo que sea) de la variable que escribamos y para que todo saga bien, cada cosa que queremos que imprima debemos juntarla como una cadena, así pues usamos el signo + para hacerlo.


Una vez hecha la función iremos a quien tiene que usar esa información y la forma más rápida es:
Ir a la script de diana y añadir una variable de tipo GameManager llamada _gameManager.
Fijaros en el START  que se me olvidó remarcarlo en la imagen.
Como todas las variables hay que iniciarlas de algún modo y esta lo que hacemos es buscar un objeto con el Tag  "GameManager" a continuación accedemos al componente del inspector llamado "GameManager", este segundo no se refiere al Tag si no a la script, sí es un poco lioso xD.
La sintaxis es como podéis ver en la linea de código 17. Sin más, ahí si os lo tenéis que creer jajaja.


Bien una vez iniciada solo tenemos que acceder a la función DE LA SCRIPT GameManager DESDE la que nos encontramos ahora.

¿Cómo accedo a una script desde otra? 

Sencillo, como hemos creado una variable que accede al componente GameManager de un objeto con el mismo Tag al iniciar el juego Y importante la función que vamos a llamar ES PÚBLICA (si fuese privada no nos aparecería en la lista cuando escribamos) solo tenemos que escribir el nombre de la variable un punto y el nombre de la función, que cómo podéis ver acaba con (); porque es una función.
En ese momento del código se llama a la función de la otra script y se ejecuta.

Si os habéis fijado, hemos creado una variable de tipo GameManager si no os habéis dado cuenta es que  ni miráis las fotos ni leéis xD

Pues si, podemos hacer variables que tengan el nombre de una Script que nosotros hayamos creado, siempre que la iniciemos correctamente, una de las formas es como os enseño más arriba, hay más, algunas se verán más adelante.

Ahora damos a Play y probamos si funciona. Os invito a probar!

Pd. Sí! por ahora solo vamos a ver la información mediante la consola, la semana que viene haremos el crono y a la siguiente lo veremos todo en el juego con la GUI 

Que paséis buena semana!

Artículo de Programación Anterior                   Siguiente


No hay comentarios:

Publicar un comentario