En esta entrada procedo a actualizar el código que mostré tiempo atrás en la publicación sobre "#Script para pausar el juego en #unity3d - Pause a game" porque con las últimas actualizaciones de Unity, es más fácil trabajar el HUD o elementos que se muestran en pantalla con el apartado de Interfaz de Usuario o UI que trae el propio motor de Unity, por consecuente esta publicación incluye como trabajar con Imagen y Canvas.
El siguiente Script es formato C# y permite contar pausar
el tiempo, y por consecuente, también toda acción dentro de la escena, en otras
palabras pausar el juego.
Lo primero a desarrollar es habilitar la opción de la imagen, dando clic
en GameObject/UI/Imagen. Para lo cual de forma automática crea el Canvas y EventSystem,
no debes de eliminar el EventSystem, porque de hacerlo, se eliminará la opción
que permite usar el touch. Luego procedemos a incorporar la imagen que usaremos
como textura en formato png para sacar provecho al canal alpha.
Si nos damos cuenta al dar clic en el objeto imagen (hijo de canvas) en
la ventana del Inspector encontraremos que podemos cambiar ese color blanco por
una imagen como tal, pero este solo admite en formato de SPRITE, por lo cual al
incorporar la imagen del botón pausa en las propiedades del mismo debemos de
cambiarlo de Texture a Sprite, y luego dar clic en “Aplicar”. Ahora si podremos
asignar la imagen del botón pausa, a la imagen que tenemos en el canvas.
Luego de haber asignado la imagen del botón a la image en el canvas,
procederemos a adjuntarle a la imagen el componente de button para poder
accionar cuando se dé clic sobre la imagen, en caso de no querer realizarlo con
imagen, puede realizarlo de forma directa con un botón desde la opción UI.
El componente botón nos permitirá activar la opción cuando demos clic
sobre la imagen, no olvidar que el script lo debe de tener la imagen, que a su
vez esta será quien active la acción de la pausa o función PausaJuego en mi
caso.
Este script incluye una variable pausa de tipo bool (verdadero o
falso). En el método Start por defecto estoy indicando que la variable tome
valor de falso para que no se congele el tiempo, y en el método PausaJuego ahí
procedemos a indicar que si pausa es verdadero sea falso, o si es falso se
cambie a verdadero para que proceda o se congele el tiempo.
El Time.timeScale controla el tiempo que está pasando en la escena,
también se lo puede usar para activar por ejemplo la sensación de una cámara
lenta. Cuando Time.timeScale es de 1,0 el tiempo pasa tan rápido como
en tiempo real, cuando es de 0,5 el tiempo pasa 2x más y cuando se
pone 0 el juego se detiene.
*C#
----------------------------------------------
----------------------------------------------
*C#
----------------------------------------------
bool pausa; //variable pausa
void Start () {
pausa = false;
}
public void PausaJuego () {
pausa = !pausa; //si pausa es true, que cambie a false o viceversa
if (pausa){
Time.timeScale = 0;
}else{
Time.timeScale = 1;
}
}
No hay comentarios:
Publicar un comentario