Unity时钟定时器插件——Vision Timer源码分析之二
By D.S.Qiu
尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com
前面的已经介绍了vp_Timer(点击前往查看),vp_TimeUtility相对简单很多,vp_TimeUtility定义了个表示时间的结构Units:
/// <summary> /// represents a time measured in standard units /// </summary> public struct Units { public int hours; public int minutes; public int seconds; public int deciSeconds; // a.k.a. 'tenths of a second' public int centiSeconds; // a.k.a. 'hundredths of a second' public int milliSeconds; }
下面就直接贴出时间与Units的转换,Units转换为string,时间转换为时钟转过的度数的实现
1.时间与Units的相互转换:
public static Units TimeToUnits(float timeInSeconds) { Units iTime = new Units(); iTime.hours = ((int)timeInSeconds) / 3600; iTime.minutes = (((int)timeInSeconds) - (iTime.hours * 3600)) / 60; iTime.seconds = ((int)timeInSeconds) % 60; iTime.deciSeconds = (int)((timeInSeconds - iTime.seconds) * 10) % 60; iTime.centiSeconds = (int)((timeInSeconds - iTime.seconds) * 100 % 600); iTime.milliSeconds = (int)((timeInSeconds - iTime.seconds) * 1000 % 6000); return iTime; } public static float UnitsToSeconds(Units units) { float seconds = 0.0f; seconds += units.hours * 3600; seconds += units.minutes * 60; seconds += units.seconds; seconds += (float)units.deciSeconds * 0.1f; seconds += (float)(units.centiSeconds / 100); seconds += (float)(units.milliSeconds / 1000); return seconds; }
2.时间转换为字符串string:
public static string TimeToString(float timeInSeconds, bool showHours, bool showMinutes, bool showSeconds, bool showTenths, bool showHundredths, bool showMilliSeconds, char delimiter = ':') { Units iTime = TimeToUnits(timeInSeconds); string hours = (iTime.hours < 10) ? "0" + iTime.hours.ToString() : iTime.hours.ToString(); string minutes = (iTime.minutes < 10) ? "0" + iTime.minutes.ToString() : iTime.minutes.ToString(); string seconds = (iTime.seconds < 10) ? "0" + iTime.seconds.ToString() : iTime.seconds.ToString(); string deciSeconds = iTime.deciSeconds.ToString(); string centiSeconds = (iTime.centiSeconds < 10) ? "0" + iTime.centiSeconds.ToString() : iTime.centiSeconds.ToString(); string milliSeconds = (iTime.milliSeconds < 100) ? "0" + iTime.milliSeconds.ToString() : iTime.milliSeconds.ToString(); milliSeconds = (iTime.milliSeconds < 10) ? "0" + milliSeconds : milliSeconds; return ((showHours ? hours : "") + (showMinutes ? delimiter + minutes : "") + (showSeconds ? delimiter + seconds : "") + (showTenths ? delimiter + deciSeconds : "") + (showHundredths ? delimiter + centiSeconds : "") + (showMilliSeconds ? delimiter + milliSeconds : "")).TrimStart(delimiter); }
3.时间对应时钟的转过的度数:
private static float HoursToDegreesInternal(float hours, float minutes = 0.0f, float seconds = 0.0f) { return (hours * 30.0f) + (minutes * 0.5f) + (seconds * 0.0083333333f); } private static float MinutesToDegreesInternal(float minutes, float seconds = 0.0f, float milliSeconds = 0.0f) { return (minutes * 6.0f) + (seconds * 0.1f) + (milliSeconds * 0.0001f); } private static float SecondsToDegreesInternal(float seconds, float milliSeconds = 0.0f) { return (seconds * 6.0f) + (milliSeconds * 0.006f); } private static float MilliSecondsToDegreesInternal(float milliSeconds) { return milliSeconds * 0.36f; }
小结:
vp_TimeUtility确实简单,之前还以为计算角度会比较复杂,贴完代码发现我想多了。具体的代码可以下载Unity时钟定时器插件——Vision Timer源码分析之一的附件查看。
刚好2:00,晚上还有做点erlang的事情,只能等明天在写了,明天打算介绍Unity3D Managed Coroutines with Start, Stop, Resume——TaskManager。
如果您对D.S.Qiu有任何建议或意见可以在文章后面评论,或者发邮件(gd.s.qiu@gmail.com)交流,您的鼓励和支持是我前进的动力,希望能有更多更好的分享。
转载请在文首注明出处:http://dsqiu.iteye.com/blog/2020604
更多精彩请关注D.S.Qiu的博客和微博(ID:静水逐风)
相关推荐
unity的UI插件,支持树状结构,列表结构,下拉菜单等多种实用UI,可修改扩展
《Unity中的延时功能:Vision Timer插件详解》 Unity作为一个强大的游戏开发引擎,其丰富的功能和易用性深受开发者喜爱。在实际开发过程中,有时我们需要在代码中实现延时执行的功能,例如动画延迟播放、事件延迟...
Unity插件——Best HTTP 封装好的网络插件,节省自己写http的时间
Unity是世界上最受欢迎的游戏开发平台之一,它为开发者提供了强大的3D和2D游戏制作工具。在Unity中,插件扮演着重要角色,可以扩展引擎的功能并优化开发流程。SRDebugger正是这样一个针对Unity的插件,它专为实时...
Unity高亮插件,高亮物体,可调颜色,闪烁类型,延迟闪烁等参数
【GraphMaker】Unity3D图表插件是一款专为Unity3D开发者设计的高效工具,它提供了丰富的图表类型,包括柱状图、折线图、饼图、环图、雷达图表以及层次树,使得在游戏或应用程序中展示数据变得更加直观和生动。...
Unity是世界上最受欢迎的游戏开发平台之一,它以其强大的3D和2D游戏开发能力而闻名。在Unity中,插件扮演着提升效率、扩展功能的重要角色。Odin是一款针对Unity的高级Inspector和Serializer插件,其最新版本V3.5旨在...
"unity3d的震屏插件——补充"这个主题主要探讨的是如何在Unity3D中实现震屏效果,以及可能存在的多种实现方法。 首先,实现震屏效果的基本思路是改变摄像机的位置或视角,模拟出屏幕震动的视觉效果。这可以通过编写...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
unity插件,制作文字冒险类游戏用插件 tip:仅支持unity2018以下版本
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
发现一个非常强大的插件,在Unity中就可以创建模型,再也不用因为建模而发愁啦
"VisionTimer定时器插件"是一款专为Unity游戏引擎设计的实用工具,它极大地扩展了游戏开发者在项目中实现计时功能的能力。Unity是全球广泛使用的跨平台游戏开发框架,支持2D和3D游戏的制作,同时也适用于创建互动式...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...
2. **基本对象与组件**:Unity中的每个游戏对象都是由一个或多个组件组成的,如Transform(变换)、Mesh Renderer(网格渲染器)和Collider(碰撞器)。了解如何创建、移动、旋转和缩放对象,以及添加和配置这些组件...
Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...