Unity实现倒计时功能

本文实例为大家分享了Unity实现倒计时功能的具体代码,供大家参考,具体内容如下

有两种思路可以实现倒计时,一个是Update,另一个是协程。这里只展示核心的算法思路,有收获的还请点个赞哦

Update

首先定义三个变量,访问权限按需求设置:

float GameTime; // 游戏总时间,int或者float都可,单位为秒
float TimeLeft; // 游戏剩余时间,单位为秒
float Timer; // 计时器
Text TimeCountDown; // 计时器Text引用

思路: 首先用GameTime初始化TimeLeft,在Update中,计时器不断增加,每过一秒,TimeLeft就-1,然后重置计时器。代码如下:

void Update()
{
 Timer += Time.deltaTime;
 if (Timer >= 1) // 每过一秒执行一次
 {
 GameTime -= 1; // 剩余秒数-1

 if (TimeLeft <= 0) // 剩余时间为0,游戏暂停
 {
   Time.timeScale = 0;
 }

 int _minute = TimeLeft / 60; // 计算剩余分钟数
 float _second = TimeLeft % 60; // 计算不足一分钟的剩余秒数

 // 对计时器文本格式化输出
 TimeCountDown.text = _minute + ":" + string.Format("{0:00}", _second);

 m_TrGame = 0f; // 重置计时器
 }
}

协程

相对来说,协程就要简单一点。同样先定义几个变量:

float GameTime; // 游戏总时间,int或者float都可,单位为秒
float TimeLeft; // 游戏剩余时间,单位为秒
Text TimeCountDown; // 计时器Text引用

思路: 首先依然用GameTime初始化TimeLeft,然后在协程中设置循环,每次循环TimeLeft都-1。代码如下:

IEnumerator TimeCountDown()
{
 TimeLeft = GameTime; // 初始化剩余时间

 while (true)
 {
 int _minute = TimeLeft / 60; // 计算剩余分钟数
 float _second = TimeLeft % 60; // 计算不足一分钟的剩余秒数

 // 对计时器文本格式化输出
 TimeCountDown.text = _minute + ":" + string.Format("{0:00}", _second);

 if (TimeLeft <= 0) // 剩余时间为0,游戏暂停
 {
   Time.timeScale = 0;
  yield break; // 退出协程必须有,上一条语句不能暂停协程
 }

 yield return new WaitForSeconds(1f); // 每次进入循环都等待1s
 }
}

一定要自己写一遍哦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity实现倒计时组件

    前言 倒计时功能在游戏中一直很重要, 不管是活动开放时间,还是技能冷却. 本文实现了一个通用倒计时组件,实现了倒计时的基本功能,支持倒计时结束后的回调. 设计思路 1.倒计时的实现是通过协程,WaitForSeconds(delay)可以很好的每隔一个delay执行一次方法,如果需要很精细的时间, 可以将delay设置成0.1等小于1的值. 2.回调是在倒计时为0时,执行一个Action类型的方法. 3.我的这个组件默认是需要Text组件来显示, 也可以根据需求删除. 先看效果: 代码实现 //

  • Unity实现倒计时功能

    本文实例为大家分享了Unity实现倒计时功能的具体代码,供大家参考,具体内容如下 有两种思路可以实现倒计时,一个是Update,另一个是协程.这里只展示核心的算法思路,有收获的还请点个赞哦 Update 首先定义三个变量,访问权限按需求设置: float GameTime; // 游戏总时间,int或者float都可,单位为秒 float TimeLeft; // 游戏剩余时间,单位为秒 float Timer; // 计时器 Text TimeCountDown; // 计时器Text引用 思

  • Swift免费短信验证码实现及动态倒计时功能

    今天给大家带来一个简单的免费短信验证码实现demo,采用mob的短信验证码SDK,到目前为止还是免费的,只需要简单的注册-->添加个人应用-->获取appkey集apSecret 即可实现. 具体怎么申请,添加个人应用这里就不累赘了,相信能搜索到本文的必然有能力完成上面的操作. 1.下载mob的免费短信验证SDK,解压后复制SMS_SDK到你的工程,因为此SDK采用OC编写的,在与Swift结合时,需要添加桥接文件,具体操作如下: 右键你的Swift工程,新建一个OC文件,名字随便起,这时会弹

  • JS实现针对给定时间的倒计时功能示例

    本文实例讲述了JS实现针对给定时间的倒计时功能.分享给大家供大家参考,具体如下: 有时候,网站需要一个倒计时的特效来庆祝某些特别的日子.自己也实现了一个,占用内存也很小噢.其原理就是每隔一秒执行一次处理函数,将终点时间和现在的时间比较然后换算之后显示对应的值. 效果如下: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>倒计时</titl

  • 基于Javascript实现倒计时功能

    本文实例实现一个倒计时功能. 倒计时功能, 用在项目的发布时间, 或者某个活动做倒计时等等的突出时间功能的方面. 界面代码结构,先要完成好. 这个界面我就不做那么美观了,凑合就行(O(∩_∩)O哈哈~). 代码名称 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>倒计时实现</title> <sty

  • JS实现用户注册时获取短信验证码和倒计时功能

    在用户注册时,通常需要短信验证码,而且为了交互效果,也需要增加倒计时. 效果如下: <div class="user-form"> <form action="{{ path('zm_member_register') }}" method="post"> <div class="form-list"> <label class="register-label"&g

  • AngularJS 验证码60秒倒计时功能的实现

    最近在做AngularJS 项目,这是写的一个60秒倒计时,  angularjs 与jq不同, 不是使用dom节点操作,而是数据操作,写倒计时,最好是使用$timeout与$interval ,不要使用settimeout与setinterval .$timeout与$interval 可使绑定数据直接更新. html <a href="javascript:" rel="external nofollow" ng-click="sendphone

  • AngularJS 支付倒计时功能实现思路

    说明: 1.前端只负责展示倒计时,不具备实际功能: 2.实际实现方式:数据库中设置一个每分钟执行一次的定时任务(故与实际情况会有一分钟以内的误差),只要订单创建时间超过15分钟会自动将订单状态改为"取消". 遇到难点: 1.字符串转date中,苹果satari浏览器不支持"yyyy-mm-dd hh:mi:ss"格式,须将字符串转为"yyyy/mm/dd hh:mi:ss" new Date($scope.order.createtime.rep

  • IOS实现验证码倒计时功能(一)

    验证码倒计时按钮的应用是非常普遍的,该Blog就和你一起来写一个IDCountDownButton来实现验证码倒计时的效果.你可以想使用普通的UIButton类型按钮一样,只需要设置其倒计时时长(若未设置,默认为60秒),就可以轻松的实现点击countDownButton开始倒计时,倒计时结束方可重新点击. 一.实现效果 如图 二.实现思路 1.自定义一个IDCountDownButton,重写 beginTrackingWithTouch:withEvent: 拦截button的点击事件,根据

  • IOS开发代码分享之用nstimer实现倒计时功能

    用nstimer实现倒计时功能,废话不多说,直接上代码,详细解释请参照注释 // [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];   // - (void)timerFireMethod:(NSTimer *)theTimer {     BOOL timeStart = YES;     NSCalend

  • iOS 验证码按钮倒计时功能

    在app 注册或者登录 需要验证码的地方.为了避免短时间内刷验证码.往往会加上一层验证. 倒计时结束后.可以重新获取! 代码实现如下: // _CountdownTime 倒计时总时间: //_timer 定时器 - (void)startTime:(UIButton *)VerificationCodeButton { __block NSInteger timeout = [_CountdownTime integerValue]; dispatch_queue_t queue = disp

随机推荐