Unity中四种倒计时实现方法
目录
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中四种倒计时实现方法相关推荐
- LayoutInflater中四种类型inflate方法的介绍
第一种: public View inflate (int resource, ViewGroup root) resource : View 的 layout 的 ID root :如果返回 nul ...
- 机器学习中四种调参方法总结
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨AI公园 编辑丨极市平台 导读 ML工作流中最困难的部分之一是 ...
- 微弱信号检测中四种降噪滤波方法的matlab实现
用Matlab实现4种滤波降噪处理算法,信号为正弦信号叠加上白噪声,参数可自主定制. %matlab clear all;clc; fs=300; Time=128; t=0:1/fs:Time; f ...
- Xgboost回归四种调参方法及Python简单实现
前言 Xgboost对特征工程和数据处理比较友好,相比之下调参成为用好Xgboost重要的一环,本文分别从参数.调参方法.Python实现的维度进行梳理,作为调参思路的记录. 本文将关注以下几个问题: ...
- java中高效遍历list_Java中四种遍历List的方法总结(推荐)
实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...
- java遍历list_Java中四种遍历List的方法总结(推荐)
实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...
- 电子计算机机房折旧提几年,IDC设备资产运营中四种“折旧率计算”的常见方法...
原标题:IDC设备资产运营中四种"折旧率计算"的常见方法 数据中心基础设施设备管理中设备的折旧是固定资产的折旧.该基础设施设备或者IT设备在长期使用后仍可保持其原始物理形态,但由于 ...
- Android中四种补间动画的使用示例(附代码下载)
场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...
- JavaScript中四种不同的属性检测方式比较
JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...
最新文章
- 大数据之公开数据的价值
- zookeeper学习记录
- 震惊!ConcurrentHashMap里面也有死循环,作者留下的“彩蛋”了解一下?
- 实战ALV OO技术实现添加工具条按钮
- centos找不到chattr命令_一个骚命令防止你的文件被误删除!
- 爬虫爬到的网页源代码不是真正的源代码_Python爬虫经常爬不到数据?你可以看一下这篇文章...
- 计算机应用基础山东省,2019年山东省中等职业学校对口升学考试:计算机文化基础+计算机应用基础模拟试卷...
- java gui 层次结构_JAVA GUI学习 - JTree树结构组件学习 ***
- 1009家网站被约谈,一批恶意营销账号终于被关闭了
- VScode与SumatraPDF反向搜索跳转问题
- 江苏计算机二级msoffice高级应用,计算机二级考试MSOffice高级应用
- Flutter2.5新特性 中文版
- 逆境之中见真章,JASMINER在众多出海企业中脱颖而出
- A Java Runtime Environment (JRE) or Java Development Kit (JDK)...
- 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别
- 手机号码转码_中文域名转码,中文域名PunyCode编码转换,中文域名在线转码工具,Punycode编码在线转换工具...
- 计算机系统软件和应用软件图,样例_计算机软件及应用_IT计算机_专业资料
- python安全渗透笔记
- WinDBG扩展命令的工作原理
- java 双击触发事件_java鼠标双击事件怎么实现
热门文章
- linux 用终端打开文件的方法
- OS X Mavericks 10.9.5 (13F34) bt下载地址
- 用css3动画效果做的跑动效果
- HDI线路板棕化与黑化的区别和作用
- MYSQL数据库ANY的用法_列子查询中使用 IN、ANY、SOME 和 ALL 操作符
- #电子版权# #app上架版权# 又有3件软件著作权认证证书电子版权认证证书3工作日下证了
- 亚马逊跨境健身器材成为新蓝海,星淘惠告诉你怎么选品
- 超简洁的十进制转十六进制
- WPF - 界面美化 MahApps.Metro UI
- 【WinForm】TextBox只能输入中文,英文,数字,不允许输入特殊字符