• 两种在Unity3D中创建倒计时器的方法

    Unity3D开发学习之路–两种在Unity3D中创建倒计时器的方法

    10月28日更新

    第三种:使用协成的方法

    void Start () {
            float time = 5;
            StartCoroutine (Timer(time));
        }
    
        public IEnumerator Timer(float time){
            while (time>0) {
                yield return new WaitForSeconds (1);
                print (time);
                time--;
            }
        }

    第一种

    txtTimer为Text组件

    private float nextTime = 1;//一秒之后执行
    private void Timer1()
    {
     if (nextTime <= Time.time)
        {
            second--;//second为倒计时时间
            txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
            nextTime = Time.time + 1;//到达一秒后加1
            if (second <= 0) this.enabled = false;
        }
    }
    

    第二种

    
    private float totalTime = 0;
    private void Timer2()
    {
      //累加每帧消耗时间
        totalTime += Time.deltaTime;
        if (totalTime >= 1)//每过1秒执行一次
        {
            second--;
            txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
            totalTime = 0;
        }
    }   
    

    两种方法都在Update中使用。

    展开全文
  • Unity 3d 实现倒计时

    2017-12-19 01:19:48
    在做吃金币的游戏的时候,感觉只有金币数的增加太单调了,于是增加了倒计时的功能。查实现方法的时候,看了很多种方法但还是不懂具体怎么实现,最后在贴吧找到了方法成功实现。 首先是常规操作,创建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上更新时间对象后,延时一秒,然后时间减一秒,重复更新。

    展开全文
  • using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.UI; public class TestTimeBegin : MonoBehaviour { public Text timeLab;...
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    using UnityEngine.UI;
    public class TestTimeBegin : MonoBehaviour {
    	public Text timeLab;
    	int initSeconds;
    	int nowSeconds;
    	void Start () {
    		initSeconds = 1800;//初始时间
    		nowSeconds = initSeconds;//当前时间
    		ConverToTimeStr(nowSeconds);
    	}
    	void Update () {
    		
    		int tempTime = (int)Time.time;
    		nowSeconds = initSeconds - tempTime;
    		timeLab.text = ConverToTimeStr (nowSeconds);
    	}
    	string ConverToTimeStr(int sec){
    		int h = sec / 3600;
    		int m = (sec - h * 300) / 60;
    		int s = sec % 60;
    		return string.Format ("{0:D2}:{1:D2}:{2:D2}",h,m,s);
    	}
    }
    

    在这里插入图片描述

    展开全文
  • Unity中实现倒计时

    2019-09-11 09:21:08
    Unity3D 中实现倒计时功能

    Unity中使用Coroutine(协程)实现倒计时功能

    在这里插入图片描述

    核心代码:

    do {
            currentMinute = minute;
                do {
                    while (pause) {
                        yield return null;
                    }
                    second--;
                    if (OnCountDowning != null) {
                        OnCountDowning (minute, second);
                    }
                    yield return new WaitForSeconds (1);
                } while (second > 0);
                second = 60;
                minute--;
            } while (minute >= 0);
    

    定义接口定义闹钟的基础功能:

    public interface ICountDown {
        void StartCountDown ();
        void StopCountDown ();
        Action OnCountDownStart { get; set; }
        Action OnCountDownEnd { get; set; }
        Action OnCountDownPause { get; set; }
        Action<int, int> OnCountDowning { get; set; }
        bool Pause { get; set; }
    }
    

    部分实现代码:

        /// <summary>
        /// 开始计时回调
        /// </summary>
        /// <value></value>
        public Action OnCountDownStart { get; set; }
        /// <summary>
        /// 计时结束回调
        /// </summary>
        /// <value></value>
        public Action OnCountDownEnd { get; set; }
        /// <summary>
        /// 计时暂停回调
        /// </summary>
        /// <value></value>
        public Action OnCountDownPause { get; set; }
        /// <summary>
        /// 计时过程回调
        /// </summary>
        /// <value>int分别代表分钟数和秒钟数</value>
        public Action<int, int> OnCountDowning { get; set; }
    
        [SerializeField][Header ("分钟")]
        private int minutes = 0;
        [SerializeField][Header ("秒钟")]
        private int seconds = 0;
    
        [SerializeField]
        private bool pause = false;
        /// <summary>
        /// 暂停当前倒计时
        /// </summary>
        public bool Pause {
            get { return pause; }
            set {
                pause = value;
                if (OnCountDownEnd != null) {
                    OnCountDownEnd ();
                    Debug.Log ("时间暂停");
                }
            }
        }
        /// <summary>
        /// 当前秒钟数
        /// </summary>
        /// <value></value>
        public int currentSecond { get; private set; }
        /// <summary>
        /// 当前分钟数
        /// </summary>
        /// <value></value>
        public int currentMinute { get; private set; } //代表当前分钟数
    

    使用方式:

    话不多说,Demo中都有,Demo扫码关注 ->当前文章末尾 获取

    欢迎关注


    在这里插入图片描述

    展开全文
  • unity3d倒计时功能

    2018-05-25 14:59:56
    unity3d用C#编写的倒计时 //CountDown.CS using UnityEngine; using System.Collections; using System; public class textTest : MonoBehaviour {  public SpriteText countDown;  public ...

    这篇是很久之前的博客,现在将该功能更新于下面地址:

    https://blog.csdn.net/alayeshi/article/details/40344955

    展开全文
  • unity3d 4.x可用!!5.x没测试过,Unity3d 倒计时shader 技能冷却shder cooldown shader
  • 今天分享一下如何基于Unity3D计时器工具,为了方便演示,使用了UGUI的Text,代码简单具有拓展性,然后有什么错误或者意见也欢迎大家给我提出来。微信二维码已经显示在博客主页,有想要沟通学习的,项目外包的都...
  • Unity3D倒计时两种方法

    2019-08-07 16:26:29
    简单的倒计时:var time_:int;function Update(){time_=100-Time.time;print(time_.ToString());}二.Unity3D GUI 时钟脚本:var Tu1 : Texture2D;var Time1 : float = 0;function FixedUpdate () {Time1 += Time....
  • Unity3D开启协程倒计时

    2019-06-26 02:04:07
    代码如下: IEnumerator cutTime(float timer) { while (timer >-1) { yield return new WaitForSeconds(1); Debug.Log(timer); if (timer == 0) ...
  • Unity3d协程的知识,不了解的同学可以在网上查找一下相关资料或者看一下Unity3D协程介绍 以及 使用。 下面介绍Unity3d协程实现倒数计时,实现代码: public class GameManager : MonoBehaviour { private bool _...
  • using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;.../// 倒计时 /// </summary> public class DaoJiShi_CeShi : MonoB...
  • 在平时的开发过程中,计时、倒计时经常在游戏中用到,想必大家都有自己的处理高招,为了以后用方便使用,抽象出一个 TimerManager 类,功能很简单,这儿采用协程的 WaitForSeconds 来处理计时、倒计时,希望对你有所...
  • 最近刚学到的一个倒计时,有做一点改动,实现倒计时结束显示任务失败的面板,同时计时器也消失。 using UnityEngine; using UnityEngine.UI; public class TimeManager : MonoBehaviour { //填写你需要的时间,按秒...
  • 输入结束时间,开始倒计时,时间差不超过一天,附上代码:(关于个位数显示,加个判断如果小于10 显示的字符串加上0) 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine...
  • unity3d 实现图片倒计时, 很简单其实就是 每一秒钟数字减去1 然后根据数字找到对应的图片 转载于:https://www.cnblogs.com/unitd3d/p/4921229.html
  • unity3d倒计时c#代码

    2013-12-12 19:20:42
    c#倒计时/计时代码 using UnityEngine; using System.Collections; using System; public class textTest : MonoBehaviour {  public UILabel countDown;  public int endTime;  public int curren
  • Unity倒计时(Update)

    2019-08-23 10:13:36
    上面是效果 下面是代码 using UnityEngine; using UnityEngine.UI;.../// Des: 倒计时测试 /// Auth:https://blog.csdn.net/dinghqalex /// </summary> public class TimeTest : MonoBehaviour { ...
  • unity3D UI界面计时

    2019-03-18 14:14:03
    计时器不难写,但是麻烦。运行界面自然不用说,后台也要计时的话就需要用到保存了,接下来就直接上代码了,里面有些无用的东西还请无视!^_^ using System.Collections; using System.Collections.Generic; using ...
  • private void Timer1() { if (nextTime ) { allTime--;//second为倒计时时间 timeText.text = "Time:" + allTime + " s"; nextTime = Time.time + 1;/
  • 有两种思路可以实现倒计时,一个是Update,另一个是协程。这里只展示核心的算法思路,有收获的还请点个赞哦~~~ Update 首先定义三个变量,访问权限按需求设置: float GameTime; // 游戏总时间,int或者float都可,...
1 2 3 4 5 ... 20
收藏数 654
精华内容 261