首页 > 代码库 > unity3d 计时功能舒爽解决方案

unity3d 计时功能舒爽解决方案

上次也写了一篇计时功能的博客

今天这篇文章和上次的文章实现思路不一样,结果一样

上篇文章地址:http://www.cnblogs.com/shenggege/p/4251123.html

思路决定一切啊。。。

这次思路比上次的好很多,多谢我的好基友小全全指点

思路就是new一个时间,年月日随便写,时/分/秒/毫秒归零

为什么要归零呢?

因为在update中每执行一次,我们就向这个时间 +time.deltatime 秒

然后在分别取出分/秒/毫秒

表达能力有限,举个例子吧

2015.1.30.17.17.41.33

不要前面的年月日:17时17分41秒33毫秒

update每执行一次,我们就加上时间,然后在分别取出分/秒/毫秒

最后挨个取字符就得到我们想要的结果了

哎,还是解释得不够完美,这已经是我语言表达能力的极限了

我直接上代码吧,代码量很少

 1     private DateTime timeNow = new DateTime(1994, 10, 19, 00, 00, 00, 00); 2  3     void Update() 4     { 5         timeNow = timeNow.AddSeconds(Time.deltaTime); 6  7         SetGameTime(timeNow, time); 8         SetGameTime(timeNow, best); 9 10         //这个是对比时间用的11         //Debug.Log(DateTime.Compare(DateTime.Now, timeNow));12     }13 14     /// 置游戏时间 <summary>15     /// 置游戏时间16     /// </summary>17     /// <param name="_time">时间</param>18     /// <param name="timeType">时间类型</param>19     private void SetGameTime(DateTime _time, UISprite[] timeType)20     {21         //拼接字符22         //最终格式:00112223         string currentTime = string.Format("{0}{1}{2}",24             //取分补025             _time.Minute.ToString().PadLeft(2, 0),26             //取秒补027             _time.Second.ToString().PadLeft(2, 0),28             //取毫秒/10补0(1s=1000ms 只需要两位数 所以/10)29             (_time.Millisecond / 10).ToString().PadLeft(2, 0)30             );31 32         //显示对应的图(我用的是美术字)33         for (int i = 0; i < 6; i++)34             timeType[i].spriteName = currentTime.Substring(i, 1);35     }

 

以上是全部代码,希望对大家有所帮助!

现在回头看看上次关于这个功能的文章,不堪直视啊- -

 

哦哦,差点忘记了!!

使用这个思路的话,当分为60分时,会自动归零

因为60分=1时!也就是说当分为60时,就会出现bug!

尼玛归零了!玛归零了!归零了!零了!了!!

不过话说回来哪个二货会在手机上挂个60分钟就为了等这个bug出现。。。

 

本文链接:http://www.cnblogs.com/shenggege/p/4262905.html

unity3d 计时功能舒爽解决方案