老规矩,先介绍一下 Unity 的科普小知识:
🎬 博客主页:https://xiaoy.blog.csdn.net
🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉
🎄 学习专栏推荐:Unity系统学习专栏
🌲 游戏制作专栏推荐:游戏制作
🌲Unity实战100例专栏推荐:Unity 实战100例 教程
🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📆 未来很长,值得我们全力奔赴更美好的生活✨
------------------❤️分割线❤️-------------------------
在游戏中我们有时候会拿到玩家本次游玩某个关卡的游戏时间,拿到的时间一般是float\int。
此时需要将float\int值转换为一个时间格式,如00:00:00这种,一起看下解决方案吧。
private void FloatForTime(float time)
{
//秒数取整
int seconds = (int)time;
//一小时为3600秒 秒数对3600取整即为小时
int hour = seconds / 3600;
//一分钟为60秒 秒数对3600取余再对60取整即为分钟
int minute = seconds % 3600 / 60;
//对3600取余再对60取余即为秒数
seconds = seconds % 3600 % 60;
//打印00:00:00时间格式
Debug.Log($"时间:{hour:D2}:{minute:D2}:{seconds:D2}");
}
time为传入的float值,比如传入255,则打印结果如下:
也可以简单封装一个方法专门用来将float值转换为时间格式,代码如下所示:
public class TimeDemo : MonoBehaviour
{
private void Start()
{
//打印255.55转换为时间格式
Debug.Log(255.55f.ToTimeFormat());
}
}
public static class FloatExtension
{
///
/// 将秒数转化为00:00:00格式
///
/// 秒数
/// 00:00:00
public static string ToTimeFormat(this float time)
{
//秒数取整
int seconds = (int)time;
//一小时为3600秒 秒数对3600取整即为小时
int hour = seconds / 3600;
//一分钟为60秒 秒数对3600取余再对60取整即为分钟
int minute = seconds % 3600 / 60;
//对3600取余再对60取余即为秒数
seconds = seconds % 3600 % 60;
//返回00:00:00时间格式
return string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, seconds);
}
}