Unity Time类简介及应用

举报
陈言必行 发表于 2021/08/14 00:51:41 2021/08/14
【摘要】 下面是时间体系图:具体方法介绍可查Unity圣典,, Time 时间管理器: 说明: ● Fixed Timestep: 物理固定帧率.即: FixedUpdate响应事件的刷新帧率 ● Maximum Allowed Timestep: [’mæksɪməm] 物理固定帧率更新的最大时间值 ● Time Scale: 时间缩放 注: 如果Ti...

下面是时间体系图:具体方法介绍可查Unity圣典,,
1
Time 时间管理器:
2
3

说明:
● Fixed Timestep: 物理固定帧率.即: FixedUpdate响应事件的刷新帧率
● Maximum Allowed Timestep: [’mæksɪməm] 物理固定帧率更新的最大时间值
● Time Scale: 时间缩放
注:
如果Time Scale被缩小 -> 场景播放镜头变慢(场景中播放速率变慢) -> 播放画面出现卡顿现象

几个常用的变量介绍


Time.time 时间 (会受到时间缩放的影响)
此帧开始的时间(只读)。这是以秒计算到游戏开始的时间。也就是说,从游戏开始到到现在所用的时间。

//利用Time.time实现每隔多少秒做逻辑事情
public float rate = 2f;
private float nextTime = 0.0f;
private int count = 0;

void Update(){ if(Time.time > nextTime){ nextTime = Time.time + rate; Debug.Log(count++); }
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Time.deltaTime 增量时间:
● 以秒计算,完成最后一帧的时间/上一帧的时间(只读)。
● 放在Update()函数中的代码是以帧来执行的.如果我们需要物体的移动以秒来执行.我们需要将物体移动的值乘以Time.deltaTime
● 如果想要一个值根据每帧的变化而变化(增加或减少) ,你应该使用 Time.deltaTime来乘以这个值。这样才能使得变化的效果依赖于单位时间,而不是帧频。这不仅使得游戏的运行独立于帧频,也使得运动的效果符合现实。
● 每秒物体移动10米

void Update(){ float translation = Time.deltaTiem * 10; translation .Translate(0,0,translation);
}
  
 
  • 1
  • 2
  • 3
  • 4

理解Time.deltaTime:
Time.deltaTime表示上一帧执行的时间,即上一次Update()所执行的时间

在Update中,Time.deltaTime值小了,但是Update()相对于FixedUpdate在1秒内执行的次数就正比增多了
即:在Update()中,不论Time.deltaTime值为多少,经过1秒时间后,相加值都为1
(1/30秒 * 30次Update() = 1秒),(1/60秒 * 60次Update() = 1秒)

应用Time.deltaTime 简例:(计时器,倒计时)

//计时器
//利用Time.deltaTime 实现每隔多少秒做什么事
float timer = 1; //时间器
int count = 0;   //计数
void Update(){ time -= Tiem.datleTiem; if(tiemr <= 0){ tiemr = 1f; Debug.Log(count++); }
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Time.timeScale 时间缩放
传递时间的缩放,这个可以用于慢放,暂停,

  • 1)当timeScale传递时间1.0时和实时时间一样快
    2)当timeScale传递时间0.5时比实时时间慢一半
    3)当timeScale传递时间为0时游戏暂停
    4)当timescale设置为0时,FixedUpdate函数将不会被调用

**注:
scaleTime影响的是Time.time,影响的是时间
不会影响realtimeSinceStartup**

Time 成员变量
1- timeSinceLevelLoad在同一场景中与time值是一样的,当切换场景,这个时间会重新计算

2- 在处理逻辑时使用Update效果更好

3- frameCount记录的是所有的帧数量值

4- realtimeSinceStartup与Time.time一样记录项目运行时间的,不同的是Time.time记录项目运行的时间,而realtimeSinceStartup记录的是所有时间,包括项目暂停时,时间也同样记录

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/78186019

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。