C# 浮点转时间

想了大半天实在想不出什么更适合文章的标题。。。

就现在这个标题,挺好- -

什么是浮点转时间呢?

今天写的一个计时功能,想来想去还是现在这种解决方案比较合适

先上一张图在来讲解比较明了

如图:赛车游戏的计时

计时格式为:分'秒'毫秒

先来个脑筋急转弯让大家乐乐

已知:

1小时=60分

1分=60秒

1秒=?毫秒

敲了四年代码今天我居然会掉进这个坑里!!估计脑袋短路了吧- -

按照这个逻辑1秒=60毫秒,这是完全错误的!1秒=1000毫秒才是正确的答案

好吧,请深深的鄙视我吧。。。

其实这篇文章没有什么高深的东西,主要说这种解决方案还是不错滴

怎么个不错法呢,听我一一道来

可以看见上图中有一个“个人记录”一栏

如果我们要把这个数据存在数据库中,咋存?

用存日期时间的方式?

用文本?

在这里我用的是浮点型

从游戏开始计算,一局游戏我到完成花费了150.12秒

我就直接把150.12存进数据库,然后读取的时候在把这个数转换成 分/秒/毫秒 这样的格式

可以看见当 分/秒/毫秒 为一位数时,会自动补0,比如:01 02 03 这样

所以我们现在要做的是,获取时间:totalTime += Time.deltaTime;

然后在相对应的计算出 分/秒/毫秒

我写了一个方法,这个方法仅供我计时用

其他地方反正用不上,就不考虑扩展性什么的了

参考一下我的思路就行!上代码

 1     /// 计算时间 <summary>
 2     /// 计算时间
 3     /// </summary>
 4     /// <param name="_Convert">欲计算的文本</param>
 5     /// <param name="_point">小数点左=0;右=1</param>
 6     /// <returns>返回格式 00</returns>
 7     private string CalcTime(string _Convert, int _point)
 8     {
 9         string[] temSplit = _Convert.Split(new char[] { '.' });
10 
11         if (Convert.ToInt32(temSplit[_point]) < 10)
12             return ("0" + temSplit[_point]).Replace("-", "0");
13 
14         //被整除的时候为'-.--',所以直接替换成0
15         return (temSplit[_point].Substring(0, 1) + temSplit[_point].Substring(1, 1)).Replace("-","0");
16     }

没错,你没有看错,我用的就是这么简单的方法

调用的代码

1     void FixedUpdate()
2     {
3         totalTime += Time.deltaTime;
4         temMinute = CalcTime(Convert.ToDouble(totalTime / 60f).ToString("0.00"), 0);
5         temSeconds = CalcTime(Convert.ToDouble(totalTime - Convert.ToDouble(temMinute) * 60f).ToString("0.00"), 0);
6         temMilli = CalcTime(Convert.ToDouble(totalTime - Convert.ToDouble(temMinute) * 60f).ToString("0.00"), 1);
7     }

好吧,真的一点不高深,纯属看思路

也没啥好说的,随便看看吧

我游戏功能要实现的功能还有一大堆,先闪了

写得不好勿喷

本文链接:http://www.cnblogs.com/shenggege/p/4251123.html

原文地址:https://www.cnblogs.com/shenggege/p/4251123.html