zoukankan      html  css  js  c++  java
  • Unity之计时器功能(转)

    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.   
    7.     public int hours;  
    8.     public int minutes;  
    9.     public int seconds;  
    10.     public int deciSeconds;     // a.k.a. 'tenths of a second'  
    11.     public int centiSeconds;    // a.k.a. 'hundredths of a second'  
    12.     public int milliSeconds;  
    13. }  

           下面就直接贴出时间与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.   
    8.     iTime.deciSeconds = (int)((timeInSeconds - iTime.seconds) * 10) % 60;  
    9.     iTime.centiSeconds = (int)((timeInSeconds - iTime.seconds) * 100 % 600);  
    10.     iTime.milliSeconds = (int)((timeInSeconds - iTime.seconds) * 1000 % 6000);  
    11.   
    12.     return iTime;  
    13. }  
    14. public static float UnitsToSeconds(Units units)  
    15. {  
    16.   
    17.     float seconds = 0.0f;  
    18.     seconds += units.hours * 3600;  
    19.     seconds += units.minutes * 60;  
    20.     seconds += units.seconds;  
    21.   
    22.     seconds += (float)units.deciSeconds * 0.1f;  
    23.     seconds += (float)(units.centiSeconds / 100);  
    24.     seconds += (float)(units.milliSeconds / 1000);  
    25.   
    26.     return seconds;  
    27.   
    28. }  

    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.   
    6.     Units iTime = TimeToUnits(timeInSeconds);  
    7.   
    8.     string hours = (iTime.hours < 10) ? "0" + iTime.hours.ToString() : iTime.hours.ToString();  
    9.     string minutes = (iTime.minutes < 10) ? "0" + iTime.minutes.ToString() : iTime.minutes.ToString();  
    10.     string seconds = (iTime.seconds < 10) ? "0" + iTime.seconds.ToString() : iTime.seconds.ToString();  
    11.     string deciSeconds = iTime.deciSeconds.ToString();  
    12.     string centiSeconds = (iTime.centiSeconds < 10) ? "0" + iTime.centiSeconds.ToString() : iTime.centiSeconds.ToString();  
    13.     string milliSeconds = (iTime.milliSeconds < 100) ? "0" + iTime.milliSeconds.ToString() : iTime.milliSeconds.ToString();  
    14.     milliSeconds = (iTime.milliSeconds < 10) ? "0" + milliSeconds : milliSeconds;  
    15.   
    16.     return ((showHours ? hours : "") +  
    17.         (showMinutes ? delimiter + minutes : "") +  
    18.         (showSeconds ? delimiter + seconds : "") +  
    19.         (showTenths ? delimiter + deciSeconds : "") +  
    20.         (showHundredths ? delimiter + centiSeconds : "") +  
    21.         (showMilliSeconds ? delimiter + milliSeconds : "")).TrimStart(delimiter);  
    22.   
    23. }     

    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.   
    10. private static float SecondsToDegreesInternal(float seconds, float milliSeconds = 0.0f)  
    11. {  
    12.     return (seconds * 6.0f) + (milliSeconds * 0.006f);  
    13. }  
    14.   
    15.   
    16. private static float MilliSecondsToDegreesInternal(float milliSeconds)  
    17. {  
    18.     return milliSeconds * 0.36f;  
    19. }  
    20.                                                       转载自:http.dsqiu.iteye.com
  • 相关阅读:
    2020/12/27
    2020/12/25 the light
    2020/12/25
    2020/12/23
    2020/12/22
    美加大量银行用户遭攻击,这些黑客到底牛到什么程度?
    揭秘马云的蚂蚁科技“整改”计划
    大众集团成功研发:可移动的电动汽车充电器,网友:太方便了
    东方联盟郭盛华的江湖往事
    5种方法!疫情期间防御恶意软件,网络钓鱼和诈骗
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/6640108.html
Copyright © 2011-2022 走看看