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         //最終格式:001122
23         string currentTime = string.Format("{0}{1}{2}",
24             //取分補0
25             _time.Minute.ToString().PadLeft(2, '0'),
26             //取秒補0
27             _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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM