游戏与现实时间流速的单位换算

通常游戏中的时间,与现实时间有很大的区别 。
比如说策划会给我们类似的需求:在游戏中的一天,在现实世界中只有12分钟 。
这个时候就需要用到单位换算,为了防止切换地图影响时间,我们以现实时间为准,推导出如下结论:
500ms=0.5s=1m,30s=1h,12m=一天
由此可以通过如下步骤求解:
第一步,通过时间戳,算出当前已经过去的毫秒数
/// /// 转换时间戳 /// public static long TimestampLongTicks(){DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));return (DateTime.Now.Ticks - startTime.Ticks);}public static long TimestampLongMs(){return TimestampLongTicks() / 10000;}/// /// 获得今天的毫秒数/// public static long TimestampLongDay(){var sysTime = TimestampLongMs();int sysTimeZone = 8;//给定时间戳的时区return (sysTime + sysTimeZone * 3600000) % 86400000; }
第二步,通过当前已过去的毫秒数,算出游戏时间的时分,代码片段如下
//通过时间戳计算出当前游戏时间var _num = TimestampLongDay();//获取当前秒数var _ms = _num %720000;gameTime = _ms / 500;h = (int)gameTime / 60;m = (int)gameTime % 60;
第三步,封装为显示出来的游戏时间并进行整点播报(可省略),代码片段如下:
gameTimeStr = "";var _beforeH = "";if (h <= 9) _beforeH = "0";gameTimeStr += _beforeH + h + ":";var _beforeM = "";if (m <= 9) _beforeM = "0";gameTimeStr += _beforeM + m;Debug.Log(GameTimeStr);if (m == 0) Debug.LogError("整点播报");
【游戏与现实时间流速的单位换算】打印测试结果如下: