Unity3D UGUI制作计时器

发表于2018-08-21
评论0 2.1k浏览
计时器功能很常见,甚至很多游戏中也有用到,比如说某个游戏副本,需要限制多长时间,超过就会被判定为通过失败,下面就尝试使用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;  
    }  
}  

二、截图

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引