上次也寫了一篇計時功能的博客
今天這篇文章和上次的文章實現思路不一樣,結果一樣
上篇文章地址: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