Unity时钟定时器插件——Vision Timer源码分析之二

前面的已经介绍了vp_Timer(点击前往查看),vp_TimeUtility相对简单很多,vp_TimeUtility定义了个表示时间的结构Units:

C#代码  
  1. /// <summary>
  2. /// represents a time measured in standard units
  3. /// </summary>
  4. public struct Units
  5. {
  6. public int hours;
  7. public int minutes;
  8. public int seconds;
  9. public int deciSeconds;     // a.k.a. 'tenths of a second'
  10. public int centiSeconds;    // a.k.a. 'hundredths of a second'
  11. public int milliSeconds;
  12. }

下面就直接贴出时间与Units的转换,Units转换为string,时间转换为时钟转过的度数的实现

1.时间与Units的相互转换:

C#代码  
  1. public static Units TimeToUnits(float timeInSeconds)
  2. {
  3. Units iTime = new Units();
  4. iTime.hours = ((int)timeInSeconds) / 3600;
  5. iTime.minutes = (((int)timeInSeconds) - (iTime.hours * 3600)) / 60;
  6. iTime.seconds = ((int)timeInSeconds) % 60;
  7. iTime.deciSeconds = (int)((timeInSeconds - iTime.seconds) * 10) % 60;
  8. iTime.centiSeconds = (int)((timeInSeconds - iTime.seconds) * 100 % 600);
  9. iTime.milliSeconds = (int)((timeInSeconds - iTime.seconds) * 1000 % 6000);
  10. return iTime;
  11. }
  12. public static float UnitsToSeconds(Units units)
  13. {
  14. float seconds = 0.0f;
  15. seconds += units.hours * 3600;
  16. seconds += units.minutes * 60;
  17. seconds += units.seconds;
  18. seconds += (float)units.deciSeconds * 0.1f;
  19. seconds += (float)(units.centiSeconds / 100);
  20. seconds += (float)(units.milliSeconds / 1000);
  21. return seconds;
  22. }

2.时间转换为字符串string:

C#代码  
  1. public static string TimeToString(float timeInSeconds, bool showHours, bool showMinutes, bool showSeconds,
  2. bool showTenths, bool showHundredths, bool showMilliSeconds,
  3. char delimiter = ':')
  4. {
  5. Units iTime = TimeToUnits(timeInSeconds);
  6. string hours = (iTime.hours < 10) ? "0" + iTime.hours.ToString() : iTime.hours.ToString();
  7. string minutes = (iTime.minutes < 10) ? "0" + iTime.minutes.ToString() : iTime.minutes.ToString();
  8. string seconds = (iTime.seconds < 10) ? "0" + iTime.seconds.ToString() : iTime.seconds.ToString();
  9. string deciSeconds = iTime.deciSeconds.ToString();
  10. string centiSeconds = (iTime.centiSeconds < 10) ? "0" + iTime.centiSeconds.ToString() : iTime.centiSeconds.ToString();
  11. string milliSeconds = (iTime.milliSeconds < 100) ? "0" + iTime.milliSeconds.ToString() : iTime.milliSeconds.ToString();
  12. milliSeconds = (iTime.milliSeconds < 10) ? "0" + milliSeconds : milliSeconds;
  13. return ((showHours ? hours : "") +
  14. (showMinutes ? delimiter + minutes : "") +
  15. (showSeconds ? delimiter + seconds : "") +
  16. (showTenths ? delimiter + deciSeconds : "") +
  17. (showHundredths ? delimiter + centiSeconds : "") +
  18. (showMilliSeconds ? delimiter + milliSeconds : "")).TrimStart(delimiter);
  19. }

3.时间对应时钟的转过的度数:

C#代码  
  1. private static float HoursToDegreesInternal(float hours, float minutes = 0.0f, float seconds = 0.0f)
  2. {
  3. return (hours * 30.0f) + (minutes * 0.5f) + (seconds * 0.0083333333f);
  4. }
  5. private static float MinutesToDegreesInternal(float minutes, float seconds = 0.0f, float milliSeconds = 0.0f)
  6. {
  7. return (minutes * 6.0f) + (seconds * 0.1f) + (milliSeconds * 0.0001f);
  8. }
  9. private static float SecondsToDegreesInternal(float seconds, float milliSeconds = 0.0f)
  10. {
  11. return (seconds * 6.0f) + (milliSeconds * 0.006f);
  12. }
  13. private static float MilliSecondsToDegreesInternal(float milliSeconds)
  14. {
  15. return milliSeconds * 0.36f;
  16. }
  17.                                                       转载自:http.dsqiu.iteye.com

转载于:https://www.cnblogs.com/weiqiangwaideshijie/p/6640108.html

Unity之计时器功能(转)相关推荐

  1. unity简单计时器_简单且悦目的Pomodoro计时器

    unity简单计时器 拟态 (pomotroid) Pomotroid is a simple and configurable Pomodoro timer. It aims to provide ...

  2. unity实现吸附功能的效果

    unity实现吸附功能的效果随笔 物体移动到墙体一定距离会被吸附到墙体上面 这个一定的距离根据代码 Vector3 scale = boxCol.transform.localScale+ new V ...

  3. Unity录屏功能插件NatCorder使用简记

    Unity录屏功能插件NatCorder使用简记 简单介绍 插件下载 使用简介 代码 参考链接 简单介绍 NatCorder 是一个轻量级且易于使用的全功能视频录制 API,适用于 iOS.Andro ...

  4. unity2d游戏开发系列教程:二、新建工程并熟悉Unity编辑器常用功能

    目录 unity2d游戏开发系列教程:一.环境安装 第一步.打开项目 耐心等待一小会 工程界面 第二步.创建第一个场景(第一关)进行试玩 点击图中标号1的运行按钮,即可简单试玩感受,操作如下 移动A, ...

  5. Android实现计时器功能

    使用Handler和线程来实现计时器功能 1.xml布局 在drawable中添加yuan.xml如下 <?xml version="1.0" encoding=" ...

  6. c# 实现计时器功能

    场景 在低液位预警弹窗点击确定后需要实现一个计时器,比如在五分钟后再执行监控. 实现思路是使用Timer然后每秒执行一个方法,在方法中对秒数进行减1操作,等倒计时结束后执行相应的操作. 实现 但是Ti ...

  7. 关于Unity的回放功能

    关于Unity的回放功能 最近公司的仿真项目需要用到回放的功能,但是在unity中的回放功能,无论是插件(EZRecordManager)还是其他人的代码,感觉都不太好,网上有两个博客讲的回放,在这里 ...

  8. Js实现简单的计时器功能

    最近学习JavaScript的计时器功能,做了一个小案例,在此记录一下,需要的童鞋可以看一下,代码的缺点是小时数部分计时样式没有做出来完整的显示,望海涵. <!DOCTYPE html> ...

  9. Unity计时器功能

    在程序开发中很多地方会用到计时器进行倒计时的功能.下面我就写一个非常实用的倒计时功能. 首先在场景中建一个Text用来显示倒计时的数值,然后给它加上倒计时的脚本Timer. 代码如下: using U ...

最新文章

  1. [Android]Android端ORM框架——RapidORM(v1.0)
  2. BigDecimal相除异常
  3. STM32F103CB IAP升级时APP部分调试
  4. mysql索和使用引的创建_MySQL索引的创建与使用
  5. windows linux cpu 抢占式 时间片_嵌入式Linux中进程调度怎样来解析
  6. 使您的Java代码闻起来很新鲜
  7. HDU-2602-Bone Collector(dp)
  8. SpringCloud学习笔记002---Spring Cloud实战微服务准备
  9. unity直播推流方式_【技术猩球】从方案架构分析秀场直播的四种实现方式
  10. 【渝粤题库】陕西师范大学210024 学前儿童科学教育 作业 (专升本)
  11. 连锁行业信息化的现状与问题
  12. 传奇新增物品和装备的内观外观及特效Pak文件详解
  13. 学习纠错码和相关的计算代数系统
  14. SpringCloud使用Feign调用第三方接口
  15. Matlab显示无法解析,MatLab和AMEsim联合编译的时候出现【无法解析的外部符号】问题...
  16. 装机员系统下载合集(五月更新发布)!
  17. html5 光线流光效果,HTML5 CANVAS 漂亮的流光线性花形图案动画
  18. 多品种+小批量生产计划方法
  19. 实战-Android 系统读取Uboot环境变量实现
  20. MUR860D-ASEMI快恢复二极管MUR860D参数

热门文章

  1. Xposed源码剖析——Xposed初始化
  2. 云计算机玩大型游戏,云游戏实测点评:大部分都可以顺畅玩耍
  3. 网易内推java 面试_网易内推面试
  4. blob转file对象_JavaScript Blob 对象解析
  5. docker mysql 不稳定_docker 的 mysql 容器运行一段时间后崩溃
  6. 与guacamole服务器的网络不稳定,Apache Guacamole安全漏洞影响数千万用户 - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...
  7. core控制器属性注入的用处_了解ASP.NET Core 依赖注入,看这篇就够了
  8. php好玩的源码_github上比较有趣的PHP开源项目
  9. linux bash文件,linux之bash配置文件
  10. 矩阵的特征值、特征向量