Unity 3d 实现倒计时

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

进入游戏的界面

查实现方法的时候,看了很多种方法但还是不懂具体怎么实现,最后在贴吧找到了方法成功实现。
首先是常规操作,创建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上更新时间对象后,延时一秒,然后时间减一秒,重复更新。

  • 13
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值