Unity 3d 实现倒计时

来源:互联网 发布:淘宝比较真的法国代购 编辑:程序博客网 时间:2024/05/09 08:31

在做吃金币的游戏的时候,感觉只有金币数的增加太单调了,于是增加了倒计时的功能。

进入游戏的界面

查实现方法的时候,看了很多种方法但还是不懂具体怎么实现,最后在贴吧找到了方法成功实现。
首先是常规操作,创建Text,然后放到合适的位置。
然后新建一个空GameObject,添加脚本CountDown.cs。
脚本代码如下:

public GameObject text;public int TotalTime = 60;void Start (){    StartCoroutine(CountDown());}IEnumerator CountDown(){    while (TotalTime >=0)    {        text.GetComponent<Text>().text = TotalTime.ToString();        yield return new WaitForSeconds(1);        TotalTime--;    }}

然后将Text拉到空GameObject的GameObject属性上,就建立了连接,再打开游戏,就能看见倒计时了。

代码里用到了协程,写博客就是为了强化学习这一知识点。
协程其实就是一个IEnumerator(迭代器),IEnumerator 接口有两个方法 Current 和 MoveNext() ,只有当MoveNext()返回 true时才可以访问 Current,否则会报错。迭代器方法运行到 yield return 语句时,会返回一个expression表达式并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。
Unity在每帧做的工作就是:调用 协程(迭代器)MoveNext() 方法,如果返回 true ,就从当前位置继续往下执行。
协程不是线程,也不是异步执行的,是Unity每帧LateUpdate()之后都会去处理的函数。

代码中的StartCoroutine 即为开始执行协程。yield return new WaitForSeconds(1f);的意思为等待1秒 , 一段指定的时间延迟之后继续执行,在所有的Update函数完成调用的那一帧之后。这起到控制时间的作用。在总时间为0前,在GUI的Text上更新时间对象后,延时一秒,然后时间减一秒,重复更新。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 俄罗斯五年定居护照丢了怎么办 百家号文章质量分一直在下降怎么办 如果在韩国把护照弄丢了怎么办 坐亲戚的车出了车祸受伤怎么办 出了车祸受伤对方不拿医药费怎么办 如果找你买保险的不在了保单怎么办 赴美生子父母一方是绿卡怎么办 农保报销需要居住证过期了怎么办 有上海户口但没有户口本怎么办护照 签证用的旧护照丢失了英签怎么办 买的动迁房房东不肯过户怎么办 身份信息在qq邮箱泄露了怎么办 别人用我的身份证贷款不还怎么办 做兼职被骗了身份证泄露了怎么办 qq绑定的手机号被别人换了怎么办 银行卡丢失不知道卡号和密码怎么办 美团景点门票过了退款期怎么办 我的手机汽车之家无法看视频怎么办 来事泡温泉细菌感染外阴瘙痒怎么办 西澳大学语言班没通过怎么办 银行入职培训理论考试不合格怎么办 去泰国旅游不会泰语和英语的怎么办 老板不发工资怎么办没签合同的 3d模型导进去材质丢失怎么办 七日杀显示载入中之后进不去怎么办 进京证过期了车在北京怎么办 微信打字时剪切的东西丢了怎么办 错过了医师定期考核报名时间怎么办 大学档案在自己手里放多年怎么办 档案在自己手里10年了怎么办 快递地址区域划分写错了怎么办 怀孕八个月肛门长个肉疙瘩怎么办呢 客户签了合同不要货了怎么办 不喂母乳宝宝只认识保姆了怎么办? 开创者比赛后没有买的鸽子怎么办 买回来小鸽子开家我敢了怎么办 小鸽子出壳后母鸽就不孵了怎么办 狗狗在笼子里一直叫怎么办 养了一年母鸽子不配对怎么办 血管翳云翳斑翳长满眼睛怎么办 鸽子训放50公里突然下雨了怎么办