首页 >> 大全

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

2023-10-07 大全 20 作者:考证青年

通常游戏中的时间,与现实时间有很大的区别。

比如说策划会给我们类似的需求:在游戏中的一天,在现实世界中只有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("整点播报");

打印测试结果如下:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了