Unity Time.timeScale
调整Time.timeScale的影响。
1.timeScale不会影响Update和LateUpdate的执行速度。
2.FixedUpdate是根据时间来的,所以timeScale只会影响FixedUpdate的速度。
3.Update和LateUpdate不是不受影响吗?那怎么就暂停游戏了呢?Update和LateUpdate并没有停,依然在渲染,只是你的代码中依赖于Time.deltaTime的逻辑将会被停掉了,因为Time.deltaTime = 0了。所以游戏看起来是被冻结了。
细说
设置 Time.timeScale 为 0 将会暂停所有和帧率无关的事情。这些主要是指所有的物理事件和依赖时间的函数、刚体力和速度等,而且 FixedUpdate 会被暂停(不是Update),因为FixedUpdate函数是根据时间来进行更新的。
但是,Update 函数本身的执行是不会受 Time.timeScale 的影响的。Update 是依赖你的机器的,它的调用次数和你的机器渲染一样快慢(一些特殊情况除外);性能高的机器,帧率高,Update 函数执行次数也就多。因此,当使用 Time.timeScale = 0 时,游戏看起来是被冻结了,这是因为所有和时间有关的事情都被暂停了。但是,我们的游戏仍在渲染,也就是说 Update 函数仍在执行。无论 Time.timeScale 等于多少,Update 和 LateUpdate 都会去执行。所有的动画都是基于时间来的,因为Time.timeScale = 0了,所以 Time.time 也就不会在变化了。当 Time.timeScale 为 0 时,Time.deltaTime 将为 0。这意味着,如果你使用 Time.deltaTime 来控制旋转和位移等,那Time.timeScale = 0 也将使这些物体停止运动。
如果游戏暂停以后想在暂停界面上继续播放一些不受 Time.timeScale 影响的动画,那么我们就需要用到 Time.realtimeSinceStartup。
总结
总之一句话 Time.timeScale 影响的是 Unity 的游戏时间缩放比例。Unity 里面所有跟时间有关系的东西都是根据 timeScale 来演算的。
Time.timeScale影响的是Unity的游戏时间缩放比例。Unity里面所有跟时间有关系的东西都是根据timeScale来演算的。仔细想想现在的手游就是个 动画 和 粒子技能特效 还有UI位移特效,所以改他们的速度直接用Time.timeScale就可以完成。
我们如果想暂停游戏的话,Time.timeScale = 0 可以暂停游戏,Time.timeScale = 1 恢复正常,但这是作用于整个游戏的设置,不单单是当前场景,记得在需要的时候重置回Time.timeScale = 1。当然也可以使用Time.timeScale来做游戏的1倍、2倍整体加速。
Unity Time.timeScale相关推荐
- Unity Time.timeScale控制播放声音放慢
unity声音一般是不跟Time.timeScale进行变化 AudioSource pitch 倍速播放 默认=1可以减慢和加快 而且这个可以在播放中或者播放前设置,都会生效 例如杀死有些怪物有爆炸 ...
- Unity的timeScale影响范围
刚开始使用Unity,在照着教程做弹球游戏,设置了通过终点和跳下跑道两边两种终止情况,发现小球在触发游戏终止条件的时候并没停止,确切的说是左右方向的运动停止了,但还在向前运动. 在网上搜了下这个问题, ...
- 【Unity】Obi插件系列(一)—— 总览、Actors与Solvers
链接:https://pan.baidu.com/s/1Q9OiM_nwMyeApEhEzsCemw 提取码:1234 Obi框架 Obi是一个基于粒子的Unity物理学插件的集合.Obi的内容一切都 ...
- 详解Unity中Time类的用法与深入探究
前言 在游戏世界中,时间无疑是最为重要的参数,它是游戏世界能否正常运转的关键.一旦它出错,轻则卡顿,重则游戏世界崩坏.在使用Unity引擎创造的世界中,Time类无疑是必须要掌握的一个类,它是控制时间 ...
- DOTween的一些基本用法
说明:参照Siki学院Andy老师的课程整理的关于DOTween的一些比较常用的方法,再次感谢老师的讲解 适合看的人呢:稍微知道这个插件是干嘛的就行O(∩_∩)O,至少我觉得是 由于前面有些没有记,也 ...
- Unity下利用 timeScale和 unscaledDeltaTime实现部分静帧
话题铺垫 看图说话 想必用Unity开发的朋友们都知道一个知识点,Time.timeScale 用于控制整个游戏运行时的时间缩放,使用它可以调整时间的流动速度,设置为0时间静默,设置为1时间按照我们真 ...
- Unity如何在Time.timeScale=0暂停游戏后继续计时
Unity如何在Time.timeScale=0暂停游戏后继续计时 最近,做一款关于跑酷的小游戏,在角色死亡后,将游戏暂停. Time.timeScale = 0; 然后,想在游戏暂停后,有5秒的倒计 ...
- Unity Animator不受Time.TimeScale影响
1.代码实现: private Animator anim:private void Start() {anim=GetComponent<Animator>();anim.updateM ...
- Unity关于Time.timeScale游戏暂停
游戏暂停一般我会使用Time.timeScale = 0,我把游戏暂停理解为和切后台操作是一个意思,都应该停止当前游戏行为.但是这并不表明update和fixUpdate就不运行了. Time.tim ...
最新文章
- scrum 敏捷开发
- 数据库系统工程师考点分析
- 网站开发综合技术 HTML
- 中国三大运营商发声!要求纽交所复议退市决定
- 小牛485通讯原理_让你秒懂智能电表工作原理及抄表原理
- Nhibernate中Unexpected row count的一种解决办法
- 函数防抖debounce和节流throttle
- x86_64的debian(wheezy)下使用qemu和busybox运行linux
- 【渝粤题库】陕西师范大学209016《管理心理学》作业
- 麻省理工18年春软件构造课程阅读10“抽象数据类型”
- 无pygame写一个python贪吃蛇
- spss实现主成分分析
- CRM系统更换服务器,CRM系统三种常见安装实施解决方式
- 深度学习与卷积神经网络
- 转未来10年35项最值得你期待的技术
- OneClock 不息屏的极简时钟,不仅仅是翻页时钟那么简单!
- C程序设计语言 特别版 pdf
- 极速前进——DPDK GRO/GSO的转发性能提升实例
- linux系统查看IP地址,不显示IP地址或者只显示127.0.0.1
- 大学生变身建筑工人:在家隔离的美国学生们,正在Minecraft中复现一座座大学校园...