Unity3D时间类Time和DateTime的用法

系列文章目录

Unity知识点


文章目录

  • 系列文章目录
  • 前言
  • 一、Time和DataTime的区别
    • 1-1、命名空间不同
  • 二、Time和DataTime的使用
    • 2-1、Time类
    • 2-2、代码解释如下:
    • 2-3、DataTime类
    • 2-4、代码解释如下:
  • 三、实际应用
    • 3-1、Time类测试性能代码如下
    • 3-2、运行结果如下:
    • 3-3、Tiem还能控制游戏的加速,减速,暂停
    • 3-4、DataTime类计算两个日期之间的天数差
    • 3-5、运行结果如下:
    • 3-6、DataTime类计算距离0点的时间
    • 3-7、运行结果
    • 3-8、DataTime类的格式化输出
    • 3-9、运行结果
    • 3-10、DataTime制作进度条
  • 四、比较时间的大小
  • 总结


大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

前言

只要是用到时间,日期都少不了用到时间类DataTime,但是DataTime和Time有什么区别呢?
下面就来写一下他们的区别


提示:以下是本篇文章正文内容,下面案例可供参考

一、Time和DataTime的区别

1-1、命名空间不同

Time 是在 using UnityEngine; 命名空间下面
DataTime 是在 using System; 命名空间下面

从命名空间就可以看出来,Time类是Unity自带的时间类,而DateTime类是C#语言下的时间类。

Time类主要是保存Unity里面一系列和时间相关的数据,比如Time.time表示从游戏开始到现在的时间,会随着游戏暂停而停止,Time.deltaTime 表示从上一帧到当前帧时间,以秒为单位,又称增量时间。

而DateTime类主要是获取时间日期等相关的数据,比如DateTime.Now表示获取当前时间,DateTime.DaysInMonth(2023, 8)表示计算某年某月的天数。

二、Time和DataTime的使用

2-1、Time类

在这里插入图片描述
图中,小红旗标识的为只读值,紫色标注的为可读可写

2-2、代码解释如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class TimeScript : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Debug.Log(Time.time);                   //表示从游戏运行到现在的时间,会随着游戏的暂停而停止计算。Debug.Log(Time.deltaTime);              //表示从上一帧到当前帧的时间,以秒为单位。Debug.Log(Time.unscaledDeltaTime);      //不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。Debug.Log(Time.timeSinceLevelLoad);     //表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。Debug.Log(Time.unscaledTime);           //不考虑timescale时候与time相同,若timescale被设置,则无效。Debug.Log(Time.fixedDeltaTime);         //表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。Debug.Log(Time.realtimeSinceStartup);   //表示自游戏开始后的总时间,即使暂停也会不断的增加。Debug.Log(Time.frameCount);             //总帧数Debug.Log(Time.fixedTime);              //表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。Debug.Log(Time.smoothDeltaTime);        //表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。Debug.Log(Time.timeScale);              //时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,非常有用。Debug.Log(Time.captureFramerate);       //表示设置每秒的帧率,然后不考虑真实时间。      }}

Time类主要作用就是为了从Unity的运行中获取与时间相关的信息。

2-3、DataTime类

在这里插入图片描述
红色小旗代表只读,蓝色为方法

2-4、代码解释如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DataTimeScript : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Debug.Log(DateTime.Now);//当前本地时间 (年月日时分秒) Debug.Log(DateTime.UtcNow);//当前世界时间 (年月日时分秒) Debug.Log(DateTime.Now.Year);//当前时间 (年)Debug.Log(DateTime.Now.Month);//当前时间 (月)Debug.Log(DateTime.Now.Day);//当前时间 (日)Debug.Log(DateTime.Now.Hour);//当前时间 (时)Debug.Log(DateTime.Now.Minute);//当前时间 (分)Debug.Log(DateTime.Now.Second);//当前时间 (秒)Debug.Log(DateTime.Now.AddDays(1));//后一天时间  Debug.Log(DateTime.Now.Date);//当前零点时间  00:00:00Debug.Log(DateTime.Compare(DateTime.Now, DateTime.Now));//时间比较Debug.Log(DateTime.DaysInMonth(2023, 12));//获取某年某月的天数Debug.Log(DateTime.IsLeapYear(2023));//判断是否是闰年Debug.Log(DateTime.Parse("2023年12月19日 16:04:42"));//格式化字符串Debug.Log(DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified));//指定格式//实例化DateTime类DateTime testTime = new DateTime(2023, 12, 19);testTime.ToLocalTime();Debug.Log(testTime.ToLocalTime());//本地时间Debug.Log(testTime.DayOfWeek);//返回星期的数值Debug.Log(testTime.Date);//获取日期Debug.Log(testTime.AddDays(1));//添加天数}
}

DateTime时间类更多的是对日期时间的获取与操作。

三、实际应用

3-1、Time类测试性能代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Time_ : MonoBehaviour
{void Start(){//Time.realtimeSinceStartup: 表示自游戏开始后的总时间,即使暂停也会不断的增加。float time_1 = Time.realtimeSinceStartup;for (int i = 0; i < 10; i++){Function_1();}float time_2 = Time.realtimeSinceStartup;Debug.Log("Function_1所用时间:" + (time_2 - time_1));float time_3 = Time.realtimeSinceStartup;for (int i = 0; i < 10; i++){Function_2();}float time_4 = Time.realtimeSinceStartup;Debug.Log("Function_2所用时间:" + (time_4 - time_3));}private void Function_1(){int num = 1;for (int i = 0; i < 1000; i++){num += 5;}}private void Function_2(){int num = 1;for (int i = 0; i < 10000; i++){num -= 5;}}
}

3-2、运行结果如下:

在这里插入图片描述

3-3、Tiem还能控制游戏的加速,减速,暂停

加速: Time.timeScale = 2;
减速: Time.timeScale = 0.5;
暂停: Time.timeScale = 0;

3-4、DataTime类计算两个日期之间的天数差

代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DataTime_ : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){DateTime dt1 = new DateTime(2023, 12, 19);DateTime dt2 = new DateTime(2024, 1, 1);TimeSpan span = dt2.Subtract(dt1);Debug.Log("天数差:"+span.Days);                        //返回天数差Debug.Log("天数差中的小时数:" + span.Hours);          //返回天数差中的小时数Debug.Log("天数差中的秒数:" + span.Seconds);        //返回天数差中的秒数Debug.Log("总秒数:"+span.TotalSeconds);            //返回开始时间到结束时间的总秒数}}

3-5、运行结果如下:

在这里插入图片描述

3-6、DataTime类计算距离0点的时间

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DataTime_night : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){TimeSpan date;date = DateTime.Now.AddDays(1).Date - DateTime.Now;//距离零点时间Debug.Log("距离凌晨的时间还有:"+string.Format("{0:D2}:{1:D2}:{2:D2}", date.Hours, date.Minutes, date.Seconds));    }}

3-7、运行结果

在这里插入图片描述

3-8、DataTime类的格式化输出

代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DataTimeFunction : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//DateTime详解DateTime dt = DateTime.Now;dt.GetDateTimeFormats('s')[0].ToString();//2023-12-19T14:06:25 dt.GetDateTimeFormats('t')[0].ToString();//14:06 dt.GetDateTimeFormats('y')[0].ToString();//2023年12月 dt.GetDateTimeFormats('D')[0].ToString();//2023年12月19日 dt.GetDateTimeFormats('D')[1].ToString();//2023 12 19 dt.GetDateTimeFormats('D')[2].ToString();//星期二 2023 12 19 dt.GetDateTimeFormats('D')[3].ToString();//星期二 2023年12月19日 dt.GetDateTimeFormats('M')[0].ToString();//12月19日 dt.GetDateTimeFormats('f')[0].ToString();//2023年12月19日 14:06 dt.GetDateTimeFormats('g')[0].ToString();//2023-12-19 14:06 dt.GetDateTimeFormats('r')[0].ToString();//Sat, 05 Nov 2023 14:06:25 GMTDebug.Log(dt.ToString("d"));//短日期:2023/12/19Debug.Log(dt.ToString("D"));//长日期:2023年12月19日Debug.Log(dt.ToString("f"));//完整短日期/时间:2023年12月19日 17:17Debug.Log(dt.ToString("F"));//完整长日期/时间:2023年12月19日 17:17:07Debug.Log(dt.ToString("g"));//常规短日期/时间:2023/12/13 17:17Debug.Log(dt.ToString("G"));//常规长日期/时间:2023/12/19 17:17:07Debug.Log(dt.ToString("R"));//日期时间:Mon, 13 Sep 2023 17:17:07 GMTDebug.Log(dt.ToString("s"));//可排序日期:2023-09-13T17:17:07Debug.Log(dt.ToString("t"));//短时间:17:17Debug.Log(dt.ToString("T"));//长时间:17:17:07Debug.Log(dt.ToString("u"));//通用可排序日期/时间:2023-12-19 17:17:07ZDebug.Log(dt.ToString("U"));//通用完整日期/时间:2023年12月19日 9:17:07Debug.Log(dt.ToString("Y"));//年月:2023年12月Debug.Log(dt.ToString("M"));//月日:12月19日Debug.Log(dt.ToString("yyyy"));//年Debug.Log(dt.ToString("MM"));//月Debug.Log(dt.ToString("dd"));//日Debug.Log(dt.ToString("hh"));//时Debug.Log(dt.ToString("mm"));//分Debug.Log(dt.ToString("ss"));//秒}}

3-9、运行结果

在这里插入图片描述

3-10、DataTime制作进度条

代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class DataTimeSlider : MonoBehaviour
{public Text TextCurrentTime;public Slider Slider;private DateTime CurrentTime;private float sliderValueScale = 0.1f;private DateTime StartTime;private DateTime EndTime;private bool isPlay = true;void Start(){StartTime = DateTime.Now;CurrentTime = StartTime;EndTime = DateTime.Now.AddSeconds(10);//增加10秒TimeSpan timeSpan = EndTime.Subtract(StartTime);double totalSeconds = timeSpan.TotalSeconds;//返回开始时间到结束时间的总秒数sliderValueScale = (float)(1 / totalSeconds);//返回slider播放的速度}void Update(){if (isPlay){if (CurrentTime >= EndTime){isPlay = false;}CurrentTime = CurrentTime.AddSeconds(1 * Time.deltaTime);TextCurrentTime.text = CurrentTime.ToString();Slider.value += sliderValueScale * Time.deltaTime;}}
}

我就不录屏了,自行测试即可

四、比较时间的大小

这个我之前的博客写过,这里我就不写了,
博客链接

如有新的东西添加,会继续添加的

总结

不定时更新Unity开发技巧,觉得有用记得一键三连哦。
防止后面忘记,所以记录一下
有更详细的大佬文章:https://itmonon.blog.csdn.net/article/details/120267214?spm=1001.2014.3001.5502

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小H靶场笔记:DC-7

DC-7 January 8, 2024 4:11 PM Tags&#xff1a;Drupal 8&#xff1b;Drush Owner&#xff1a;只惠摸鱼 信息收集 使用arp-scan和nmap扫描C段存活主机&#xff0c;探测到靶机ip&#xff1a;192.168.199.137&#xff0c;且开放80、22端口 探测22、80开放端口的服务、版本、操…

Mac电脑系统提速软件CleanmyMac X2024

Mac是现代人日常工作时必不可少的工具&#xff0c;尤其是在居家办公已经屡见不鲜的当下。视频会议、文档传送、视频剪辑等等。它在工作中扮演的角色越来越重要&#xff0c;所以也导致了它的流畅程度可以在很大程度上影响人们一整天的工作效率和心情。 CleanMyMac X全新版下载如…

Shiro框架:ShiroFilterFactoryBean过滤器源码解析

目录 1.Shiro自定义拦截器SpringShiroFilter 1.1 ShiroFilterFactoryBean解析 1.1.1 实现FactoryBean接口 1.1.2 实现BeanPostProcessor接口 1.2 SpringShiroFilter解析 1.2.1 OncePerRequestFilter过滤逻辑实现 1.2.2 AbstractShiroFilter过滤逻辑实现 1.2.2.1 创建Sub…

Alphalens 因子分析 - 以低换手率因子为例(1)

因子分析是量化研究的基本技能之一。通过因子分析,找出有效的因子,通过相关性去重后,就可以通过机器学习、线性回归等方法把因子组合起来,构成交易策略。 这一篇笔记我们就介绍如何使用 Alphalens 来进行单因子分析。我们使用的因子是低换手率因子。 股谚有一种说法,天量…

风速预测 | 基于深度学习的风速预测模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 风速预测 | 基于深度学习的风速预测模型&#xff08;Matlab&#xff09; 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复基于深度学习的风速预测模型&#xff08;Matlab&#xff09;。 参考资料 [1] htt…

【Flutter 开发实战】Dart 基础篇:常用运算符

在Dart中&#xff0c;运算符是编写任何程序的基本构建块之一。本文将详细介绍Dart中常用的运算符&#xff0c;以帮助初学者更好地理解和运用这些概念。 1. 算术运算符 算术运算符用于执行基本的数学运算。Dart支持常见的加、减、乘、除、整除以及取余运算。常见的算数运算符如…

智慧灯杆sip广播可视对讲解决方案

智慧灯杆sip广播可视对讲解决方案 智能路灯以城市公共设施的全面高效利用为出发点&#xff0c;根据路况加载智能照明、新能源汽车充电桩、城市广播、视频监控、WIFI热点、LED/LCD信息发布、环境监测、微型基站、停车场管理、井盖等。监控和USB手机充电灯功能&#xff0c;不仅能…

2024 年 API 安全:预测和趋势

随着技术以前所未有的速度不断进步&#xff0c;API&#xff08;应用程序编程接口&#xff09;安全性的复杂性也随之增加。随着 API 在现代应用程序和服务中的激增&#xff0c;组织将需要更好地了解其 API 环境以及 API 给运营带来的风险。 到 2024 年&#xff0c;预计几个关键…

海外代理IP在游戏中有什么作用?

随着科技的飞速发展&#xff0c;手机和电脑等电子产品已成为互联网连接万物的重要工具&#xff0c;深度融入我们的日常生活&#xff0c;我们借助互联网完成工作、休闲和购物等任务&#xff0c;以求提升生活质量。 不仅如此&#xff0c;网络游戏也是人们心中最爱&#xff0c;它…

前端开发的新纪元:全方位工具栈探索 | 开源专题 No.57

vuejs/vue Stars: 205.6k License: MIT Vue 是一个用于构建用户界面的渐进式框架。它从头开始设计&#xff0c;可以根据不同的使用情况轻松地在库和框架之间进行扩展。Vue 由一个专注于视图层的核心库组成&#xff0c;并且还有一系列支持性库来帮助您处理大型单页应用程序中的…

YOLOv8改进 | 主干篇 | 12月份最新成果TransNeXt特征提取网络(全网首发)

一、本文介绍 本文给大家带来的改进机制是TransNeXt特征提取网络,其发表于2023年的12月份是一个最新最前沿的网络模型,将其应用在我们的特征提取网络来提取特征,同时本文给大家解决其自带的一个报错,通过结合聚合的像素聚焦注意力和卷积GLU,模拟生物视觉系统,特别是对于中…

MySQL 8.0 InnoDB 架构之 日志缓冲区(Log Buffer)和重做日志(Redo Log)

文章目录 MySQL 8.0 InnoDB 架构之 日志缓冲区&#xff08;Log Buffer&#xff09;和重做日志&#xff08;Redo Log&#xff09;REDO相关主要参数innodb_log_buffer_size innodb_redo_log_capacityinnodb_log_group_home_dir参考 【免责声明】文章仅供学习交流&#xff0c;观点…

web前端(html)练习

第一题 1. 用户名为文本框&#xff0c;名称为 UserName&#xff0c;长度为 15&#xff0c;最大字符数为 20。 2. 密码为密码框&#xff0c;名称为 UserPass&#xff0c;长度为 15&#xff0c;最大字符数为 20。 3. 性别为两个单选按钮&#xff0c;名称为 sex&#xff0c;值分…

链表--141.环形链表/easy C级理解

141.环形链表 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链…

750ml离心瓶进口国产离心机通用750ml离心杯高低速离心机瓶

750ml低速离心瓶系列&#xff1a; 产品货号&#xff1a;ZY1136222 材质&#xff1a;PPCO 容量&#xff08;ml&#xff09;&#xff1a;750 尺寸&#xff08;O.DxH,mm&#xff09;&#xff1a;98.5x147 最大离心力&#xff08;xg&#xff09;&#xff1a;6000 产品货号&…

CloudCompare——点云空间圆拟合

目录 1.概述2.软件实现3.完整操作4.相关代码 本文由CSDN点云侠原创&#xff0c;CloudCompare——点云空间圆拟合&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫与GPT生成的文章。 1.概述 CloudCompare软件中的Tools——>…

【DevOps-07-2】Sonarqube基本使用

一、简要说明 Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果 Sonarqube集成在Maven实现代码检测使用sonar-scanner客户端的方式二、Sonarqube管理后台安装中文插件 1、登录Sonarqube管理后台 示例:http://192.168.95…

Python+requests搭建接口自动化测试框架

一、接口自动化的意义&#xff08;为什么做这个框架&#xff09; 新版本上线时之前版本的功能需要进行回归测试&#xff0c;导致大量的重复性手工测试。引入自动化测试可以使用自动化技术代替部分手工的回归性测试&#xff0c;解放更多人力做其它更有必要的事情。但目前项目UI变…

RDD算子——转换操作(Transformations )【map、flatMap、reduceByKey】

一、map map 算子 # spark-shell sc.parallelize(Seq(1, 2, 3)).map( num > num * 10).collect()# IDEA Test def mapTest(): Unit {// 1. 创建RDDval rdd1 sc.parallelize(Seq(1, 2, 3))// 2. 执行 map 操作val rdd2 rdd1.map(item > item * 10)// 3. 得到结果val re…

【基础工具篇使用】ADB 的安装和使用

文章目录 ADB的命令安装ADB 命令使用查看帮助 ——adb help查看连接设备 ADB的命令安装 ADB 命令的全称为“Android Debug Bridge”&#xff0c;从英文中看出主要是用作安卓的调试工具。ADB 命令在嵌入式开发中越来越常用了 在 Windows 上按“win”“R”组合件打开运行, 输入 …