时间:2021-05-20
前言
倒计时功能在游戏中一直很重要, 不管是活动开放时间,还是技能冷却。
本文实现了一个通用倒计时组件,实现了倒计时的基本功能,支持倒计时结束后的回调。
设计思路
1、倒计时的实现是通过协程,WaitForSeconds(delay)可以很好的每隔一个delay执行一次方法,如果需要很精细的时间, 可以将delay设置成0.1等小于1的值。
2、回调是在倒计时为0时,执行一个Action类型的方法。
3、我的这个组件默认是需要Text组件来显示, 也可以根据需求删除。
先看效果:
代码实现
// 倒计时// 倒计时结束的回调using System;using System.Collections;using UnityEngine;using UnityEngine.UI;[RequireComponent(typeof(Text))]public class CountDownTime : MonoBehaviour{ public int testTime = 15; private int _timeLeft = 0; private Text _textTimer = null; private float _delay = 1; private Action _endCallback = null; private void Start() { if (_textTimer == null) _textTimer = GetComponent<Text>(); SetEndCallback(TestEndCallback); Begin(testTime, true); } public void SetEndCallback(Action callback) { _endCallback = callback; } public void Begin(int timeLeft, bool isRightNow) { _timeLeft = timeLeft; if (_textTimer == null) _textTimer = GetComponent<Text>(); if (isRightNow) CountDown(); if (gameObject.activeInHierarchy) StartCoroutine(Polling(_delay, CountDown)); } private IEnumerator Polling(float delay, Action voidFunc) { while (delay > 0) { voidFunc(); if (_timeLeft < 0 && _endCallback != null) { _endCallback(); _endCallback = null; yield return null; } yield return new WaitForSeconds(delay); } } private void CountDown() { if (_timeLeft >= 0) { TimeSpan ts = new TimeSpan(0, 0, _timeLeft--); _textTimer.text = ts.ToString(); } else if (_timeLeft < -1) { _textTimer.text = _timeLeft.ToString(); } } private void TestEndCallback() { _textTimer.text = "End!!!"; }}如有错误,欢迎指出。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
需求:有多个组件可以开启倒计时,正常情况下默认倒计时时间终了后更新UI,另,用户可以取消指定倒计时。这里使用CountDownTimer进行倒计时,其中回调函数
写完js倒计时,突然想用java实现倒计时,写了三种实现方式一:设置时长的倒计时;二:设置时间戳的倒计时;三:使用java.util.Timer类实现的时间戳倒
写完js倒计时,突然想用java实现倒计时,写了三种实现方式一:设置时长的倒计时;二:设置时间戳的倒计时;三:使用java.util.Timer类实现的时间戳倒
本文实例为大家分享了Unity实现倒计时功能的具体代码,供大家参考,具体内容如下有两种思路可以实现倒计时,一个是Update,另一个是协程。这里只展示核心的算法
python实现windows倒计时锁屏功能#倒计时锁屏importtimefromctypesimport*defclosewindows(closetime