Unity中传入任意数,转换成分,秒,并进行倒计时换算..(两种方式)

摘要:
“0”+秒:秒.ToString();temp=minTemp+“:”+秒温度;returntemp;}}第二种方法是使用Update。原理与使用System.Collections相同;使用System.Collections.Generic;使用UnityEngine;使用UnityEngine.UI;PublicclassDemoTest:MonoBehavior{publicTexttext;//用于测试的数字publicMyTime=60;floattimer=0;floattimerInterval=1f;void Update(){timer+=Time.deltaTime;if{timer=0;MyTime-=timerInterval;if{返回;}text。text=更新时间;}}//////时间转换/////<return>时间//输入时间stringUpdateTime{stringtemp;intminute,seconds;minute=;Debug.Log;seconds=inputTime%60;Debug.Log;//在这种情况下,当minute˂0时,只有一个数字,这在某些要求上可能不允许,因此请更改方法//if{//temp=“0”+minute+“:”+seconds;//}else{//temp=minute+“:”+seconds;//}/优化版本使用三元运算符获取值,这将更好地实现倒计时字符串temp=?

第一种方式是利用Unity中的协程,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DemoTest : MonoBehaviour
{
    public Text text;
    //测试用的数字
    public int MyTime = 60;

    void Start ()
    {
        //开启协程
        StartCoroutine (StartUpdate ());
    }
    //一秒钟减去1
    IEnumerator StartUpdate ()
    {
        while (true) {
            if (MyTime > 0) {
                MyTime -= 1;
                text.text = UpdateTime (MyTime);
            } else {
                break;
            }
            yield return new WaitForSeconds (1f);
        }
    }

    /// <summary>
    /// 时间换算
    /// </summary>
    /// <returns>The time.</returns>
    /// <param name="inputTime">输入的时间</param>
    string UpdateTime (int inputTime)
    {
        string temp;
        int minute, seconds;
        minute = (int)(inputTime / 60);
        Debug.Log ("minute = " + minute);
        seconds = inputTime % 60;
        Debug.Log ("seconds = " + seconds);
//         这样的话,当minute<0的时候只有一个数字,可能有的需求上不允许,所以就换一种方式

//        if (seconds >= 10) {
//            temp = "0" + minute + ":" + seconds;
//        } else {
//            temp = minute + ":" + seconds;
//        }

        //优化版,利用三目运算符进行取值,这样更好的实现倒计时
        string minTemp = (minute < 10) ? "0" + minute : minute.ToString ();
        string secTemp = (seconds < 10) ? "0" + seconds : seconds.ToString ();
        temp = minTemp + ":" + secTemp;

        return temp;
    }

}

第二种方式,利用Update,原理是一样的

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DemoTest : MonoBehaviour
{
    public Text text;
    //测试用的数字
    public int MyTime = 60;

    float timer = 0;
    float timerInterval = 1f;



    void Update ()
    {
        timer += Time.deltaTime;
        if (timer >= timerInterval) {
            timer = 0;
            MyTime -= (int)timerInterval;
            if (MyTime < 0) {
                return;
            }
            text.text = UpdateTime (MyTime);
        }
    }

    /// <summary>
    /// 时间换算
    /// </summary>
    /// <returns>The time.</returns>
    /// <param name="inputTime">输入的时间</param>
    string UpdateTime (int inputTime)
    {
        string temp;
        int minute, seconds;
        minute = (int)(inputTime / 60);
        Debug.Log ("minute = " + minute);
        seconds = inputTime % 60;
        Debug.Log ("seconds = " + seconds);
        //         这样的话,当minute<0的时候只有一个数字,可能有的需求上不允许,所以就换一种方式

        //        if (seconds >= 10) {
        //            temp = "0" + minute + ":" + seconds;
        //        } else {
        //            temp = minute + ":" + seconds;
        //        }

        //优化版,利用三目运算符进行取值,这样更好的实现倒计时
        string minTemp = (minute < 10) ? "0" + minute : minute.ToString ();
        string secTemp = (seconds < 10) ? "0" + seconds : seconds.ToString ();
        temp = minTemp + ":" + secTemp;

        return temp;
    }
}

免责声明:文章转载自《Unity中传入任意数,转换成分,秒,并进行倒计时换算..(两种方式)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇srand((unsigned)time(NULL))和rand()编译JDK源代码【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity资源Assetbundle

转  Unity资源打包之Assetbundle 本文原创版权归 csdn janeky 所有,转载请详细注明原创作者及出处,以示尊重! 作者:janeky 原文:http://blog.csdn.net/janeky/article/details/17652021 如果这篇文章对你有帮助,敬请关注作者《Unity手游之路》系列教程。 在手游的运营过程中...

unity游戏中存档和读档的方法

参考文章: https://blog.csdn.net/a1728351227/article/details/103638106 实现游戏的存读档有三个方式二进制方法XMLJSON对比二进制方法:简单,但可读性差。XML:可读性强,但是文件庞大,冗余信息多。JSON:数据格式比较简单,易于读写,但是不直观,可读性比XML差。 二进制方法(Binary F...

Unity扩展编辑器--类型3:Custom Editors

Custom Editors 加速游戏制作过程的关键是为哪些频繁使用的组件创建自定义的编辑器,为了举例,我们将会使用下面这个极其简单的脚本进行讲解,它的作用是始终保持一个对象注视某一点。 public class LookAtPoint : MonoBehaviour { public Vector3 lookAtPoint = Vector3....

Unity中Mesh分解与边缘高亮加上深度检测

  一个比较简单的需求,不过遇到些坑,记录下。   房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMesh对应的Material。如一个桌子的Mesh,其实有二个材质,分别对应二个SubMesh,一个桌面和一个桌脚,点击桌面后,只有这个桌面高光,而不是...

Unity自定义Button组件Transition

Unity自带的Button组件有三种不同的Transition(过渡)选项,分别是None,ColorTint,SpriteSwap, Animation。现在想自定义其他功能,比如在不同的状态下,按钮上的文字不同。 首先想到的是直接写一个脚本挂在Button上,实现UnityEngine.EventSystems中定义的IPointerEnterHan...

Unity简单的通过鼠标点击移动

public class PlayerController : MonoBehaviour { public float m_Speed = 10; public float m_RotationSpeed = 10; private Vector3 m_TargetPos = Vector3.zero; privat...