当前位置: 首页 > news >正文

Unity、C#常用的时间处理类

目录

1.Unity引擎内置时间类:Time

1.1.与游戏运行时间相关的字段

1.2.与帧间隔相关的字段(帧率控制)

1.3.时间缩放相关(暂停 / 慢动作)

2.C#系统时间类:System.DateTime

常用方法与字段

3.C#时间间隔类:System.TimeSpan

常用属性


       本篇文章来分享一下在Unity,C#开发中常用的时间处理类,时间相关的操作非常常见,无论是控制动画播放、物体移动、冷却计时,还是帧同步等,都需要用到。

1.Unity引擎内置时间类:Time

       Time是Unity最核心的时间工具类,提供了与游戏运行、帧率、真实时间相关的各种属性,无需实例化即可直接使用。

1.1.与游戏运行时间相关的字段

字段/属性说明适用场景
Time.time游戏启动到当前的总时间(秒),暂停时会继续累计(不受Time.timeScale影响)记录游戏总运行时长、计算长期冷却(如每日任务重置)
Time.timeSinceLevelLoad当前场景加载完成到现在的时间(秒),场景切换后重置为 0记录当前场景运行时间(如场景内倒计时、限时任务)
Time.unscaledTime游戏启动到当前的总时间(秒),完全不受暂停和Time.timeScale影响暂停时仍需运行的计时(如暂停菜单中的倒计时、UI 动画)
Time.unscaledTimeSinceLevelLoad当前场景加载后不受timeScale影响的时间,场景切换后重置场景内不受暂停影响的计时(如场景加载后的强制引导时间)

1.2.与帧间隔相关的字段(帧率控制)

字段/属性说明适用场景
Time.deltaTime上一帧到当前帧的时间间隔(秒),Time.timeScale影响timeScale=0时为 0)基于时间的移动/旋转(如transform.Translate(Vector3.forward * speed * Time.deltaTime)),确保不同帧率下速度一致
Time.unscaledDeltaTime上一帧到当前帧的真实时间间隔(秒),不受timeScale影响暂停时仍需更新的逻辑(如暂停时的鼠标悬停动画、实时计算帧率)
Time.fixedDeltaTime固定物理帧间隔时间(默认0.02秒,即50帧/秒),可在Project Settings > Time中修改物理相关更新(FixedUpdate中使用),如刚体运动、碰撞检测
Time.frameCount游戏启动到当前的总帧数计算帧率(1/Time.deltaTime)、限制某操作的执行频率

1.3.时间缩放相关(暂停 / 慢动作)

字段/属性说明适用场景
Time.timeScale时间缩放系数(默认1):
0:完全暂停(deltaTime0FixedUpdate不执行)
0.5:慢动作(时间流速减半)
2:快进(时间流速加倍)
实现暂停功能、慢动作特效(如技能释放时的慢镜头)、加速游戏进程(如快进剧情)
Time.fixedUnscaledDeltaTime固定物理帧的真实时间间隔(不受timeScale影响),通常无需修改极少数需要在暂停时仍执行物理更新的场景(需配合Physics.Simulate

2.C#系统时间类:System.DateTime

       System.DateTime用于获取真实世界的日期和时间(与游戏运行无关),适用于需要与现实时间同步的场景。

常用方法与字段

方法/字段说明示例
DateTime.Now获取当前本地时间(年/月/日/时/分/秒/毫秒)DateTime now = DateTime.Now;//例如:2023-10-01 15:30:25
DateTime.UtcNow获取当前 UTC 时间(世界协调时间,无时区偏差)用于跨时区的时间同步(如服务器时间)。
DateTime.Today获取当前本地日期(时间部分为 00:00:00)bool isNewDay = DateTime.Today != lastLoginDate;//判断是否跨天
AddXXX() 系列方法对时间进行加减(AddDays/AddHours/AddMinutes等)DateTime tomorrow = DateTime.Now.AddDays(1);//明天此时
ToString()格式化时间字符串(自定义格式)string timeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
TimeSpan表示两个时间的间隔(可通过DateTime相减得到)TimeSpan span = DateTime.Now - lastUpdateTime;//计算时间差

3.C#时间间隔类:System.TimeSpan

       TimeSpan用于表示两个时间点之间的间隔,常与DateTime配合使用,提供了天、时、分、秒等单位的精确计算。

常用属性

TimeSpan span = new TimeSpan(1, 2, 30, 45);//表示 1 天 2 小时 30 分 45 秒
属性说明示例
Days间隔中的总天数span.Days;//1
Hours间隔中的小时数(0-23)span.Hours;//2
Minutes间隔中的分钟数(0-59)span.Minutes;//30
Seconds间隔中的秒数(0-59)span.Seconds;//45
TotalSeconds间隔的总秒数(含小数)span.TotalSeconds;//1*86400 + 2*3600 + 30*60 + 45 = 95445

       本次的分享到这里就结束啦,希望对你有所帮助~

http://www.xdnf.cn/news/1291699.html

相关文章:

  • esp32s3 驱动pcm5102a 的 wav播放器,mqtt控制
  • Flutter网络请求实战:Retrofit+Dio完美解决方案
  • 微服务单元测试组件
  • 在CentOS 7上配置Android USB网络共享方式的方法
  • Linux的进程信号
  • ASP.NET 上传文件安全检测方案
  • 设计秒杀系统从哪些方面考虑
  • 微软正式将GPT-5接入Microsoft Copilot Studio(国际版)
  • 【物联网】基于树莓派的物联网开发【26】——树莓派开启串口并配置串口助手Minicom
  • jvm学习笔记之jvm的生命周期和发展历程
  • Ansible 实操笔记:Playbook 与变量管理
  • dubbo应用之门面设计模式
  • 《Python学习之基础语法2:掌握程序流程控制的艺术》
  • 101、【OS】【Nuttx】【周边】文档构建渲染:reStructuredText 格式
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day3
  • C++多态:理解面向对象的“一个接口,多种实现”
  • 《AVL树的原理与C++实现:详解平衡二叉搜索树的高效构建与操作》
  • 旧版MinIO的安装(windows)、Spring Boot 后端集成 MinIO 实现文件存储(超详细,带图文)
  • 使用 6 种方法将文件从 Android 无缝传输到iPad
  • [Linux]学习笔记系列 -- [arm][process]
  • WPF 开发的瑞士军刀:Prism 框架从入门到精通指南
  • C++写文件,open函数的参数in、out、ate、app、trunc等标志分别是什么作用?
  • C++ 面向对象四大特性:面试深度解析
  • 河南萌新联赛2025第五场 - 信息工程大学
  • IDEA创建一个VUE项目
  • C# 微软依赖注入 (Microsoft.Extensions.DependencyInjection) 详解
  • 数据分析项目----幸福感挖掘和预测
  • Python实战教程:PDF文档自动化编辑与图表绘制全攻略
  • PyTorch生成式人工智能——基于Transformer实现文本转语音
  • SeaTunnel MCP Server 入选《中国信通院开源商业产品及企业典型案例集(2025)》