首页 > 代码库 > 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 计时功能舒爽解决方案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。