miércoles, 20 de julio de 2016

Script - Cronómetro descendente con UI #Unity - Down Timer UI




En esta entrada procedo a actualizar el código que mostré tiempo atrás en la publicación sobre "Cronómetro descendente" 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 Canvas y Texto.

El siguiente Script es formato JS o JavaScript y permite contar el tiempo de forma descendente. Para su conocimiento el Script no se encuentra modificado en su esencia, pero si actualizado al uso de UnityEngine.UI (Según el Script del cronómetro con GUI).

Las primeras consideraciones que debemos tener en cuenta, es incorporar al inicio del código la siguiente línea, import UnityEngine.UI , que permite incorporar y hacer uso de las propiedades del apartado de UI o Interfaz de Usuario.

Luego de eso crearemos nuestra variable que se usará para mostrar en el cuadro de dialogo, que en este script se llama tiempoCrono, de tipo text.

En function Update se procede a ingresar todo el cálculo matemático para contar el tiempo y mostrar en formato de hora.



Otra consideración importante es que este Script lo lleva adjunto o puesto el elemento de Text del Canvas.




* JS
-------------------------------------------
import UnityEngine.UI;

private var tiempoCrono: Text; //variable para mostrar texto

/* variables para cronometro */
private var starTime: float;
private var restSeconds: int;
private var roundedRestSeconds: int;
static var displaySeconds: int;
static var displayMinutes: int;
var countDownSeconds: int; //cuanto dura el cronometro

/* function Awake se carga al iniciar el programa */

function Awake(){
tiempoCrono = GetComponent.<Text>();
starTime = Time.time;
}

function Update(){
var guiTime: float = (Time.time)-(starTime);
restSeconds = countDownSeconds - (guiTime);

if(restSeconds == 0){
Application.LoadLevel("colission");
}

roundedRestSeconds = Mathf.CeilToInt(restSeconds);
displaySeconds = roundedRestSeconds % 60;
displayMinutes = roundedRestSeconds / 60;

tiempoCrono.text = String.Format("{0:00}:{1:00}", displayMinutes, displaySeconds);//muestro en pantalla

}

-------------------------------------------

No hay comentarios:

Publicar un comentario