Unity里的Time

news2024/9/24 13:20:03

Time and frame rate management

Time类: Time script reference page.

一些常见的属性有:

  • Time.time 返回从游戏开始经历的时间.
  • Time.deltaTime 返回从上帧结束到现在经历的时间,和帧率成反比
  • Time.timeScale 控制时间流逝的因子
  • Time.fixedDeltaTime 控制fixed update 更新的间隔时间
  • Time.maximumDeltaTime 控制最大的deltatime,如果超过这个时间,也会执行一次update

Variable and Fixed time steps

Unity有两个系统分别跟踪 可变的时间间隔 和 不可变的时间间隔

可变的就是update,和帧率有关,不可变的和帧率无关

Variable frame rate management

下边的代码,是每帧移动一个距离,它就会收到帧率的影响,从而每个手机上表现不一致

//C# script example
using UnityEngine;
using System.Collections;

public class ExampleScript : MonoBehaviour {
    public float distancePerFrame;
    
    void Update() {
        transform.Translate(0, 0, distancePerFrame); // this is incorrect
    }
}

通过和 Time.deltaTime 属性相乘,这样就是每秒执行多长时间,因为帧率再怎么变化,总的时间是不变的:

Fixed Timestep

不像main frame update, Unity’s physics system根据fixed timestep更新, 在每帧的开始,unity会尽可能的多次执行 fixed updates 来赶上当前的时间

fixedDeltaTime 控制的是1秒内执行的步骤数,比如 0.01 表示每个固定的时间步长是持续时间的百分之一秒, 所以每秒有100个固定的时间步长

Unity’s Time Logic

下面的逻辑很重要:

Controlling and handling variations in time

如上所述,每帧之间的时间间隔可能会有所变化。

The properties explained in this section are:

  • Time.time
  • Time.unscaledTime
  • Time.deltaTime
  • Time.unscaledDeltaTime
  • Time.smoothDeltaTime
  • Time.timeScale
  • Time.maximumDeltaTime

Time.time 表示玩家开始游戏后经过的时间,所以通常是连续稳定地上升.

Time.deltaTime 表示自上一帧以来经过的时间量,因此理想情况下保持相当恒定

Time.timeScale 为0会暂停游戏,Update 方法依然执行,不过 Time.time 不会增加了,且Time.deltaTime 为0.

Time.unscaledTime、Time.unscaledDeltaTime不收缩放因子的影响,这对UI动画有用 

The table below shows an example of 16 frames elapsing one after another, with one large delay occuring half-way through, on a single frame. These figures illustrate how the various Time class properties report and respond to this large variation in frame rate.

FrameunscaledTimetimeunscaledDeltaTimedeltaTimesmoothDeltaTime
10.0000.0000.0180.0180.018
20.0180.0180.0180.0180.018
30.0360.0360.0180.0180.018
40.0540.0540.0180.0180.018
50.0710.0710.0170.0170.018
60.0890.0890.0180.0180.018
70.1070.1070.0180.0180.018
8 (a)1.123 (b)0.440 (c)1.016 (d)0.333 (e)0.081 (f)
91.1400.4570.0170.0170.066
101.1570.4740.0170.0170.056
111.1750.4920.0180.0180.049
121.1930.5100.0180.0180.042
131.2110.5280.0180.0180.038
141.2290.5460.0180.0180.034
151.2470.5640.0180.0180.031
161.2650.5820.0180.0180.028

如果不存在任何限制,那么由deltaTime缩放的物体就能够在帧速率高峰期间穿过游戏中的墙壁,因为从理论上讲,物体从一帧移动到下一帧的距离是没有限制的,所以它可以在一帧内从障碍物的一边跳到另一边而不会与之相交。因为还没有到on collider ***的检测

可以在上面的第8帧中看到,unscaledDeltaTime (d)和deltaTime (e)经过时间不同。尽管在第7帧和第8帧之间经过了整整一秒的实际时间,但deltaTime报告的时间仅为0.333秒。这是因为deltaTime被限制为maximumDeltaTime值。

类似地,unscaledTime (b)增加了大约整整一秒,因为添加了真实的(未缩放)值,而time (c)只增加了较小的偏移值。时间值没有赶上实际的时间,而是表现得好像延迟的持续时间只有maximumDeltaTime。

Time.smoothDeltaTime 属性表示最近deltaTime值的近似值,并根据算法平滑所有变化。 这是另一种技术,可以避免不必要的大步幅或移动波动或其他基于时间的计算。 In particular, those which fall below the threshold set by maximumDeltaTime. 平滑算法不能预测未来的变化,但它逐渐调整其值来平滑最近经过的增量时间值的变化,从而使平均报告时间保持与实际经过的时间量大致相等。

Time variation and the physics system

maximumDeltaTime也会影响 physics system.就像之前图片中提到的,如果它特别大的话,可能每帧之间需要执行的fixed update 比较多,会带来额外的压力

如果一个帧更新花费的时间超过了maximumDeltaTime,物理引擎
不会尝试模拟超过maximumDeltaTime的任何时间,而是让帧处理赶上。一旦帧更新完成,物理就会恢复,就好像它停止后没有时间过去一样。这样做的结果是,物理对象不会像通常那样完美地实时移动,而是会稍微放慢速度。然而,物理“时钟”仍然会跟踪它们,就好像它们在正常移动一样。物理时间的变慢通常是不明显的,通常是可以接受的

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

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

相关文章

一个制剂生产人眼中的精益管理

精益管理(Lean Management)是一种通过减少浪费和提高价值创造的方法,广泛应用于各个行业中,包括药品制剂生产领域。 本文,以一个多年从事药品制剂生产的人的角度,从优点、功能以及与其他管理方法的比较等方…

交通灯-设计说明书

设计摘要: 本设计基于单片机技术,旨在实现智能化交通信号控制,并具备夜间模式、禁止通行模式、同行模式切换以及车流量监测功能。通过按键S1和S2实现夜间模式和禁止通行模式的切换,确保夜间交通安全和禁止通行的需要。按键S3和S4…

阿里云OSS如果指定某个文件夹给子账户

** 第一步创建子账号 ** 创建完用户不要给任何权限! 当前页面切换到认证管理获取AccessKey即可 第二步目录授权 找到对应桶文件目录 上面授权按钮操作 选择添加的子账号账号保存即可!

springmvc核心流程

核心流程及配置 核心流程 执行流程 用户发送请求到DispatcherServlet前端控制器,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制 DispatcherServlet调用HandlerMapping映…

电机完美控制的感觉如何【应用案例】

当电机控制技术成为人体的一部分时,对控制系统的组件尺寸和可靠性要求将极大提高。得益于集成式FOC控制系统组件,第一款具有两个活动关节的义肢得以在短时间内完成—— 赶上在苏黎世举办的全球半机械人奥运会(Cybathlon)。 失去肢体显然会对一个人的生活…

社交媒体的探索者:探寻Facebook的发展历程

在当今数字化时代,社交媒体已经成为了人们日常生活中不可或缺的一部分,而Facebook作为最具影响力的社交平台之一,其发展历程承载着无数的探索与创新。本文将深入探讨Facebook的发展历程,从其创立初期到如今的全球化影响&#xff0…

MySQL深入理解MVCC机制(详解)

深入理解MVCC 1、MVCC定义 MVCC:Multi-Version Concurrency Control,多版本并发控制机制。 在mysql中,为了满足事务的四大特性之一的隔离性,就是当前事务中的查询的数据不受其他事务的增删改操作的影响,因此mysql主要是通过这个…

智能鱼缸-设计说明书

设计摘要: 本论文以STC89C52单片机为核心控制器,构建了一套智能鱼缸系统。该系统由中控部分、输入部分和输出部分组成。中控部分采用STC89C52单片机,负责获取输入部分数据并进行处理,控制输出部分。输入部分包括TDS水质水温检测模…

PyCharm2023 社区版安装 +中文语言包+配置教程+Python环境搭建

一、Python 安装 我们在安装Pycharm之前,首先要先安装Python环境也就是安装Python解释器 因为PyCharm是一个用于编写和调试Python代码的开发工具,而Python解释器是用于解释执行Python代码PyCharm需要依赖Python解释器来执行Python代码,因此…

【Stable Diffusion】 训练方法篇

一、四种模型训练方法简介 Stable Diffusion 有四种训练模型的方法:Textual Inversion、Hypernetwork、LoRA 和 Dreambooth 。它们的训练方法存在一定差异,我们可以通过下面对比来评估使用哪种训练方式最适合你的项目。 如果你知道模型中已经可以产生你…

AI图像生成-调整

一、两张图画风不相似 2、在两张图的共同输出口新添加一个空白正面提示词板块和条件合并板块 二、预处理插件(提取人物姿态) 1、新建节点-》ControlNet预处理器-》面部与姿态-》Openpose姿态预处理器 2、添加上传图片板块与预览图片板块 3、提取姿态 右…

java内容快速回顾+SSM+SpringBoot简要概述

文章目录 java基础知识基本知识列表面对对象堆与栈的关系值修改与引用修改异常:错误异常 SSMspringMVCServletSpringMVC:基于 Servlet的 Spring Web 框架, spring控制反转 IoC(Inversion of Control)面向切面 Aop MybatisJDBCMybatis SpringB…

【3DMAX教程插件】中文3DMax造雪助手造雪覆盖模拟插件使用方法

3DMax造雪助手造雪覆盖模拟插件使用教程 3DMax造雪助手,造雪覆盖模拟插件,只需点击鼠标即可创建逼真的雪。它包括5个自定义对象和6个专门为雪创建工作流设计的修改器。通过各种参数,可以在各种情况下获得所需的效果。 【适用版本】 3dMax201…

班组长不懂如何与下属沟通?教你用“三要四不要”沟通原则

班组长与员工关系和谐程度,对团队士气效率影响重大。 与员工关系融洽的班组长更能获得大家的信任和支持,还会促进团队凝聚力,激发员工的工作积极性和创新精神。 然而,有的班组长只有在安排工作、教导技能时充满自信,…

1-1 CubeMX配置第一个RTOS工程

CubeMX配置第一个RTOS工程 1: 打开cubeMX软件选择单片机型号 软件刚刚安装仍然需要加载 配置RCC时钟:开启RCC时钟 打开芯片使能仿真功能 这里使用为GD32芯片,芯片的引脚由原理图给出 PA8 与PE13是引脚:将引脚配置为输出模式 配置G…

GMV ES6直流变频多联空调机组室外机工作原理

GMV ES6直流变频多联空调机组室外机工作原理如下: 内机为制冷模式运行时,室外机根据室内机的运行负荷需求启动运行,室外换热器作为系统的冷凝器,各制冷室内机的换热器并联作为系统的蒸发器,通过室内机的送回风循环实现…

vue3专栏项目 -- 五、权限管理(下)

1、创建Message组件 前面我们获取到了请求错误的信息,所以我们接下来做一个弹出框组件,让错误提示展示出来 我们把这个组件做成一个全局组件,它不仅可以显示错误的信息,还可以添加成功操作的信息,甚至还可以显示一个…

《一文带你了解》关于ITSS认证-IT服务工程师、IT项目经理

“IT 服务工程师培训”和“IT 服务项目经理培训”为中国电子技术标准化研究院推出的 ITSS 系列培训,通过该培训的人员可系统掌握 IT 运维的知识, 提升项目管理水平,有效满足 GB/T 28827.1 的符合性评估要求。 我要充电学习提升自我&#xff0…

现在适合进入AIGC行业吗?

现在适合进入AIGC行业吗? 随着人工智能生成内容(AIGC)技术的快速发展,越来越多的人开始关注这个行业。那么,现在是否是进入AIGC行业的好时机呢?本文将从行业前景、市场需求以及个人选择与规划三个方向进行…

WebLogic Server Supported Configurations

Supported Configurations 支持的配置: 不同版本的WebLogic Server对OS、JDK、AP Server、浏览器、数据等的支持,或者说在哪些OS,JDK等的配置上进行了动作保证。 10.3以后的版本(包含10.3) 10.3以后的版本支持的配置,在以下URL中可以找对对应的excel文件下载 https://ww…