目录

Time.time:可以直接执行(适用于先执行在等待,且不固定时间)

Time.deltaTime:适用于先等待在执行,且不固定时间

InvokeRepeating:适用于固定时间重复执行(与CancelInvoke配合使用)

IEnumerator:使用协同程序编写倒计时


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 功能:倒计时
/// 作者:Dtc
/// </summary>
public class Countdown_Sic : MonoBehaviour
{

//需求:倒计时,1秒修改1次Text文本内容,十秒后文本变红
    //1.查找组件引用
    //2定义变量:秒second
    //3.120 --> 02:00119 -->01:59
    //4.修改文本
    
   //声明Text变量
    private Text timerText;
    /// <summary>
    /// 游戏运行时间
    /// </summary>
    float timer;
    /// <summary>
    /// 倒计时多少秒
    /// </summary>
    public int second = 120;

/// <summary>
    /// 下次修改时间
    /// </summary>
    float nextTime = 1;

private void Start()
    {
        //获取Text 物体的引用
        timerText = Object.FindObjectOfType<Text>();        //重复调用(会一直调用:对应CancelInvoke 取消调用)
        //InvokeRepeating(调用方法的名字 ,第一次调用时间 ,调用时间间隔)
        InvokeRepeating("CountDownF3", 1f, 1f);
    }
    
    private void Update()
    {
        //方法一
        //CountDownF1();
        //方法二:
        CountDownF2();
    }

private void OnGUI()
    {
        if (GUILayout.Button("倒计时"))
        {

//方法四:
            //开启协程
            StartCoroutine(TimeFun02(5));
        }

}

    /// <summary>/// 倒计时方法1(通过Time.time)     /// 可以直接执行(适用于先执行在等待,且不固定时间)/// </summary>private void CountDownF1(){if (Time.time >= nextTime && second > 0){//则倒计时减一秒second--;//显示倒计时文本timerText.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);nextTime = Time.time + 1;//设置下次修改时间   在当前时间上加一if (second <= 10)//当时间 小于等于10秒时,变为红色字体{timerText.color = Color.red;}}}
    /// <summary>/// 倒计时方法2(通过Time.deltaTime)    /// 先等,到时间在执行(适用于先等待在执行,且不固定时间)/// </summary>private void CountDownF2(){//计时器timer += Time.deltaTime;//当时间累加到一秒 并且 倒计时未终止  if (timer >= 1 && second > 0){//则倒计时减一秒second--;//显示倒计时文本timerText.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);timer = 0;//且计时器归零  重新计时if (second <= 10)//当时间 小于等于10秒时,变为红色字体{timerText.color = Color.red;}}}
     /// <summary>/// 倒计时方法3(通过InvokeRepeating(调用的方法,第一次调用的时间,调用一次的时间间隔)在Start中重复调用)/// 适用于固定时间重复执行/// </summary>private void CountDownF3(){//则倒计时减一秒second--;//显示倒计时文本timerText.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);if (second <= 10)//当时间 小于等于10秒时,变为红色字体{timerText.color = Color.red;}//当时间小于等于0时  停止InvokeRepeating的重复调用if (second <= 0)CancelInvoke("CountDownF3");}
    /// <summary>/// 倒计时方法4: 协程 (在一帧 方法中实现倒计时效果)/// </summary>/// <param name="timer">倒计时时间</param>/// <returns></returns>private IEnumerator TimeFun02(float timer){//当时间大于零时 执行循环  时间到了 退出循环do{//输出时间  print(timer +"秒");//并通过协程隔一秒执行一次 累减数据代码yield return new WaitForSeconds(1);timer--;}while (timer > 0);print("时间到");}

Unity中四种倒计时实现方法相关推荐

  1. LayoutInflater中四种类型inflate方法的介绍

    第一种: public View inflate (int resource, ViewGroup root) resource : View 的 layout 的 ID root :如果返回 nul ...

  2. 机器学习中四种调参方法总结

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨AI公园 编辑丨极市平台 导读 ML工作流中最困难的部分之一是 ...

  3. 微弱信号检测中四种降噪滤波方法的matlab实现

    用Matlab实现4种滤波降噪处理算法,信号为正弦信号叠加上白噪声,参数可自主定制. %matlab clear all;clc; fs=300; Time=128; t=0:1/fs:Time; f ...

  4. Xgboost回归四种调参方法及Python简单实现

    前言 Xgboost对特征工程和数据处理比较友好,相比之下调参成为用好Xgboost重要的一环,本文分别从参数.调参方法.Python实现的维度进行梳理,作为调参思路的记录. 本文将关注以下几个问题: ...

  5. java中高效遍历list_Java中四种遍历List的方法总结(推荐)

    实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...

  6. java遍历list_Java中四种遍历List的方法总结(推荐)

    实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...

  7. 电子计算机机房折旧提几年,IDC设备资产运营中四种“折旧率计算”的常见方法...

    原标题:IDC设备资产运营中四种"折旧率计算"的常见方法 数据中心基础设施设备管理中设备的折旧是固定资产的折旧.该基础设施设备或者IT设备在长期使用后仍可保持其原始物理形态,但由于 ...

  8. Android中四种补间动画的使用示例(附代码下载)

    场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...

  9. JavaScript中四种不同的属性检测方式比较

    JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...

最新文章

  1. 大数据之公开数据的价值
  2. zookeeper学习记录
  3. 震惊!ConcurrentHashMap里面也有死循环,作者留下的“彩蛋”了解一下?
  4. 实战ALV OO技术实现添加工具条按钮
  5. centos找不到chattr命令_一个骚命令防止你的文件被误删除!
  6. 爬虫爬到的网页源代码不是真正的源代码_Python爬虫经常爬不到数据?你可以看一下这篇文章...
  7. 计算机应用基础山东省,2019年山东省中等职业学校对口升学考试:计算机文化基础+计算机应用基础模拟试卷...
  8. java gui 层次结构_JAVA GUI学习 - JTree树结构组件学习 ***
  9. 1009家网站被约谈,一批恶意营销账号终于被关闭了
  10. VScode与SumatraPDF反向搜索跳转问题
  11. 江苏计算机二级msoffice高级应用,计算机二级考试MSOffice高级应用
  12. Flutter2.5新特性 中文版
  13. 逆境之中见真章,JASMINER在众多出海企业中脱颖而出
  14. A Java Runtime Environment (JRE) or Java Development Kit (JDK)...
  15. 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别
  16. 手机号码转码_中文域名转码,中文域名PunyCode编码转换,中文域名在线转码工具,Punycode编码在线转换工具...
  17. 计算机系统软件和应用软件图,样例_计算机软件及应用_IT计算机_专业资料
  18. python安全渗透笔记
  19. WinDBG扩展命令的工作原理
  20. java 双击触发事件_java鼠标双击事件怎么实现

热门文章

  1. linux 用终端打开文件的方法
  2. OS X Mavericks 10.9.5 (13F34) bt下载地址
  3. 用css3动画效果做的跑动效果
  4. HDI线路板棕化与黑化的区别和作用
  5. MYSQL数据库ANY的用法_列子查询中使用 IN、ANY、SOME 和 ALL 操作符
  6. #电子版权# #app上架版权# 又有3件软件著作权认证证书电子版权认证证书3工作日下证了
  7. 亚马逊跨境健身器材成为新蓝海,星淘惠告诉你怎么选品
  8. 超简洁的十进制转十六进制
  9. WPF - 界面美化 MahApps.Metro UI
  10. 【WinForm】TextBox只能输入中文,英文,数字,不允许输入特殊字符