Unity3D UGUI制作计时器
发表于2018-08-21
计时器功能很常见,甚至很多游戏中也有用到,比如说某个游戏副本,需要限制多长时间,超过就会被判定为通过失败,下面就尝试使用unity3d5.0+UGUI做一个很有用的游戏计时器,分享给大家。
一、源代码:
/// <summary>
/// 描述:这个类用来处理计时功能,包括计时开始,暂停计函数
/// </summary>
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Timer : MonoBehaviour {
public float time_All = 300;//计时的总时间(单位秒)
public float time_Left;//剩余时间
public bool isPauseTime = false;
public Text time;
// Use this for initialization
void Start () {
time_Left = time_All;
}
// Update is called once per frame
void Update () {
if(!isPauseTime){
if(time_Left > 0)
StartTimer();
}
}
/// <summary>
/// 开始计时
/// </summary>
void StartTimer(){
time_Left -= Time.deltaTime;
time.text = GetTime (time_Left);
}
/// <summary>
///继续游戏,这个暂时加在这里,后期代码重构时加在UIControl中
/// </summary>
public void ContinueGame(){
isPauseTime = false;
Time.timeScale = 1;
}
/// <summary>
/// 暂停计时
/// </summary>
public void PauseTimer(){
isPauseTime = true;
Time.timeScale = 0;
}
/// <summary>
/// 获取总的时间字符串
/// </summary>
string GetTime(float time){
return GetMinute (time) + GetSecond (time);
}
/// <summary>
/// 获取小时
/// </summary>
string GetHour(float time){
int timer = (int)(time / 3600);
string timerStr;
if (timer < 10)
timerStr = "0" + timer.ToString () + ":";
else
timerStr = timer.ToString () + ":";
return timerStr;
}
/// <summary>
///获取分钟
/// </summary>
string GetMinute(float time){
int timer = (int)((time % 3600)/60);
string timerStr;
if (timer < 10)
timerStr = "0" + timer.ToString () + ":";
else
timerStr = timer.ToString () + ":";
return timerStr;
}
/// <summary>
/// 获取秒
/// </summary>
string GetSecond(float time){
int timer = (int)((time % 3600)%60);
string timerStr;
if (timer < 10)
timerStr = "0" + timer.ToString ();
else
timerStr = timer.ToString ();
return timerStr;
}
}
二、截图

