Unity 3d 实现倒计时
2017-12-19 01:19
351 查看
在做吃金币的游戏的时候,感觉只有金币数的增加太单调了,于是增加了倒计时的功能。
查实现方法的时候,看了很多种方法但还是不懂具体怎么实现,最后在贴吧找到了方法成功实现。
首先是常规操作,创建Text,然后放到合适的位置。
然后新建一个空GameObject,添加脚本CountDown.cs。
脚本代码如下:
然后将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上更新时间对象后,延时一秒,然后时间减一秒,重复更新。
查实现方法的时候,看了很多种方法但还是不懂具体怎么实现,最后在贴吧找到了方法成功实现。
首先是常规操作,创建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上更新时间对象后,延时一秒,然后时间减一秒,重复更新。
相关文章推荐
- 【Unity】用Shader编程实现3D红心
- Unity中实现3D物体跳跃
- Unity 封装 倒计时(计时器,CountDownTimer),实现周期更新、技能冷却等功能
- Unity 3D 物体碰撞后实现连接
- Unity 3D追踪效果的实现 目标箭头指引
- 【Unity 3D游戏开发学习笔记】实现太阳系
- unity实现3d摇杆 结合leapmotion控制实现VR场景移动
- unity实现3D物体上的事件监听处理
- Unity 3D 海水的实现2 折射与反射 离屏相机的渲染
- unity游戏开发----unity中自定义比分倒计时实现
- unity如何实现3D物体叠加到摄像头画面上
- Unity 3D碰撞实现方法
- Unity中拖动的简单实现(UGUI以及3D物体)
- Unity 3D 游戏中实现人物头上血条(血条是在 overlay 的 canvas 下)
- Unity中使用Shader实现3D打印机效果
- Unity中修改3D模型的透明度,实现3D模型渐变出现的效果(附源码)
- Unity 实现倒计时 协程
- Unity中利用贝塞尔曲线来实现3D中的曲线运动
- 贝塞尔曲线绘制原理& unity 3d实现绘制贝塞尔曲线
- Unity 3D UV实现小地图