NGUI实现简单的倒计时组件
- using System;
- using UnityEngine;
- public enum ETimerType
- {
- CommonFormat, // 78 77 76 75 ...
- TimeFormat, //以时间格式显示倒计时
- }
- //自定义时间
- public class CustomTime
- {
- public int Days, Hours, Minutes, Seconds;
- public CustomTime(int seconds)
- {
- Days = seconds / ;
- seconds = seconds - Days * ;
- Hours = seconds / ;
- seconds = seconds - Hours * ;
- Minutes = seconds / ;
- Seconds = seconds % ;
- }
- public string GetTimeFormat()
- {
- string formatTime = "";
- if (Days > )
- {
- formatTime = string.Format("{0}天{1}:{2}:{3}", Days.ToString(), Hours.ToString("D2"), Minutes.ToString("D2"), Seconds.ToString("D2"));
- }
- else if (Hours > )
- {
- formatTime = string.Format("{0}:{1}:{2}", Hours.ToString("D2"), Minutes.ToString("D2"), Seconds.ToString("D2"));
- }
- else if (Minutes > )
- {
- formatTime = string.Format("{0}:{1}", Minutes.ToString("D2"), Seconds.ToString("D2"));
- }
- else if (Seconds > )
- {
- formatTime = string.Format("{0}", Seconds.ToString("D2"));
- }
- return formatTime;
- }
- }
- [RequireComponent(typeof(UILabel))]
- public class LabelTimer : MonoBehaviour
- {
- public delegate void OnFinish();
- public event OnFinish EvFinish;
- public int totalTime = ;
- public float interval = ;
- ETimerType timerType = ETimerType.CommonFormat;
- UILabel mLabel = null;
- void Start()
- {
- mLabel = GetComponent<UILabel>();
- }
- void Update()
- {
- interval += Time.deltaTime;
- if (interval >= )
- {
- --totalTime;
- ShowTime();
- interval = ;
- }
- if (totalTime <= )
- {
- enabled = false;
- gameObject.SetActive(false);
- if (null != EvFinish)
- EvFinish();
- }
- }
- void ShowTime()
- {
- if (timerType == ETimerType.CommonFormat)
- {
- mLabel.text = totalTime.ToString();
- }
- else if (timerType == ETimerType.TimeFormat)
- {
- CustomTime ct = new CustomTime(totalTime);
- mLabel.text = ct.GetTimeFormat();
- }
- }
- public void Stop()
- {
- gameObject.SetActive(false);
- totalTime = ;
- EvFinish = null;
- }
- public bool TimeKeeping
- {
- get
- {
- return totalTime > ;
- }
- }
- public void StartCountDown(int totalTime, ETimerType timerType)
- {
- this.timerType = timerType;
- if (null == mLabel)
- mLabel = GetComponent<UILabel>();
- this.totalTime = totalTime;
- interval = ;
- enabled = true;
- ShowTime();
- if (!gameObject.activeSelf)
- gameObject.SetActive(true);
- }
- public static LabelTimer Begin(GameObject go, int totalTime, ETimerType timerType = ETimerType.CommonFormat)
- {
- LabelTimer lt = go.GetComponent<LabelTimer>();
- if (null == lt) lt = go.AddComponent<LabelTimer>();
- lt.StartCountDown(totalTime, timerType);
- return lt;
- }
- }
NGUI实现简单的倒计时组件的更多相关文章
- Vue2.0进阶组件 短信倒计时组件
原本我想隔个几天再发文章,刚好今天项目上线,环境有问题,导致只有干等,刚好要为公司打造一套属于公司自己的一系列功能组件,这个使命就交给我了,大家也一直叫我来点干货,说实话我只是一个湿货,肚子里干一点就 ...
- Vue3语法快速入门以及写一个倒计时组件
Vue3写一个倒计时组件 vue3 beta版本发布已有一段时间了,文档也大概看了一下,不过对于学一门技术,最好的方法还是实战,于是找了一个比较简单的组件用vue3来实现,参考的是vant的count ...
- JavaScript学习笔记-简单的倒计时跳转页面
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- setbuffer和freopen做一个简单的日志组件
目标场景是这样的: 多线程的应用程序要频繁打一些小字节的日志,也不想引用很重的日志库. 设想了一个极其简单的日志组件,main线程中重定向stdout到文件,同时setbuffer设置一个10k的缓冲 ...
- [.Net Core] 在 Mvc 中简单使用日志组件
在 Mvc 中简单使用日志组件 基于 .Net Core 2.0,本文只是蜻蜓点水,并非深入浅出. 目录 使用内置的日志组件 简单过渡到第三方组件 - NLog 使用内置的日志 下面使用控制器 Hom ...
- React Native之倒计时组件的实现(ios android)
React Native之倒计时组件的实现(ios android) 一,需求分析 1,app需实现类似于淘宝的活动倒计时,并在倒计时结束时,活动也结束. 2,实现订单倒计时,并在倒计时结束时,订单关 ...
- 微信小程序倒计时组件开发
今天给大家带来微信小程序倒计时组件具体开发步骤: 先来看下最终效果: git源:http://git.oschina.net/dotton/CountDown 分步骤-性子急的朋友,可以直接看最后那段 ...
- JS简单的倒计时(代码优化)
倒计时网上一大堆,所以也没有什么好说的,支持:1.年,月,日,天,时分秒等倒计时. JS代码如下: /* * js简单的倒计时 * @param {date,obj} 日期 对象格式 */ funct ...
- 演练:使用VS2010 C# 创作简单的多线程组件
BackgroundWorker 组件取代了 System.Threading 命名空间并添加了功能:但是,可以选择保留 System.Threading 命名空间以实现向后兼容并供将来使用.有关更多 ...
随机推荐
- 1初识QT
创建程序步骤: 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对话框,选择Qt Widgets Applica ...
- python excel操作 练习:#生成一个excel文件,生成3个sheet,每个sheet的a1写一下sheet的名称。每个sheet有个底色
练习:#生成一个excel文件,生成3个sheet,每个sheet的a1写一下sheet的名称.每个sheet有个底色 #coding=utf-8 from openpyxl import Workb ...
- RHEL6.4 字符模式下安装图形界面图文教程
本文转自:http://www.cnblogs.com/wahsonleung/p/3230325.html 第1步:当然就是启动redhat,设置映像文件. 第2步:命令行输入yum groupin ...
- CSS前叙
1 css是什么?层叠样式表,修饰网页结构2 如何去使用css?a.在html网页中,加入一个style标签,在这个style标签里面写css代码b.可以直接把style里面的代码放到一个单独的文件中 ...
- HttpClient配置SSL绕过https证书
https://blog.csdn.net/irokay/article/details/78801307 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的 ...
- php随笔10-thinkphp 3.1.3 模板继承 布局
8.25 模板继承 模 板继承是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类 的继承一样,模板也可以定义一个 ...
- stm32 学习参考(转)
源:stm32 学习参考 单片机裸机下写一个自己的shell调试器 LWIP_STM32_ENC28J60_NETCONN_TCP_SERVICER(5) LWIP_STM32_ENC ...
- P2414 [NOI2011]阿狸的打字机
P2414 [NOI2011]阿狸的打字机 AC自动机+树状数组 优质题解 <------题目分析 先AC自动机搞出Trie图 然后根据fail指针建一只新树 把树映射(拍扁)到一个序列上,用树 ...
- java项目报错: org.springframework.beans.factory.BeanCreationException找不到mapper.xml文件
错误代码 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userSer ...
- 20145304 Exp4 恶意代码分析
20145304 Exp4 恶意代码分析 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控 ...