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
posted @ 2017-03-29 15:41  围墙外的世界  阅读(1239)  评论(0编辑  收藏  举报