Unity中游戏暂停和开始怎么实现?
2017-06-13 11:11
1086 查看
(1)Time.timeScale = 0可以暂停游戏,Time.timeScale = 1恢复正常,但这是作用于整个游戏的设置,不单单是当前场景,记得在需要的时候重置回Time.timeScale
= 1。当然也可以使用Time.timeScale来做游戏的1倍、2倍整体加速。
(2)timeScale影响的因素:
设置Time.timeScale = 0 将会暂停所有和帧率无关的事情。这些主要是指所有的物理事件和依赖时间的函数、刚体力和速度等,而且FixedUpdate会受到影响,会被暂停(不是Update),即timeScale
=0 时将不会调用FixedUpdate函数了。
但是,Update和LateUpdate函数本身的执行是不会受Time.timeScale的影响的。Update是依赖你的机器的,它的调用次数和你的机器渲染一样快慢(一些特殊情况除外);性能高的机器,帧率高,Update函数执行次数也就多。因此,当使用Time.timeScale
= 0时,所有和时间有关的事情都被暂停了。因为Time.timeScale为0时,Time.deltaTime将为0。这意味着,如果你使用Time.deltaTime来控制旋转和位移等,那么Time.timeScale
= 0也将使这些物体停止运动。所以游戏看起来是被冻结了,但是,我们的游戏仍在渲染,也就是说Update函数仍在执行。
所以Update和LateUpdate这两个方法里面需要自己用代码控制,且可以设定某些地方不会暂停(比如UI动画),弊端是如果想暂停,所有动画相关都要与Time.deltaTime这个字段绑定。
(3)如果游戏暂停以后想在暂停界面上继续播放一些不受Time.timeScale 影响的动画或者粒子特效之类的,那么我们就需要用到Time.realtimeSinceStartup去单独恢复他们,还有声音部分也需要单独恢复timeScale。
(4)以前看到一种实现暂停的方法是放弃Time.deltaTime,自己实现两个函数:OnPauseGame和 OnResumeGame。这种方法扩展性强,缺点是写起来可能比较繁琐。
补充有关于暂停的相关有个帖子还是不错的 http://www.xuanyusong.com/archives/2956
= 1。当然也可以使用Time.timeScale来做游戏的1倍、2倍整体加速。
(2)timeScale影响的因素:
设置Time.timeScale = 0 将会暂停所有和帧率无关的事情。这些主要是指所有的物理事件和依赖时间的函数、刚体力和速度等,而且FixedUpdate会受到影响,会被暂停(不是Update),即timeScale
=0 时将不会调用FixedUpdate函数了。
但是,Update和LateUpdate函数本身的执行是不会受Time.timeScale的影响的。Update是依赖你的机器的,它的调用次数和你的机器渲染一样快慢(一些特殊情况除外);性能高的机器,帧率高,Update函数执行次数也就多。因此,当使用Time.timeScale
= 0时,所有和时间有关的事情都被暂停了。因为Time.timeScale为0时,Time.deltaTime将为0。这意味着,如果你使用Time.deltaTime来控制旋转和位移等,那么Time.timeScale
= 0也将使这些物体停止运动。所以游戏看起来是被冻结了,但是,我们的游戏仍在渲染,也就是说Update函数仍在执行。
所以Update和LateUpdate这两个方法里面需要自己用代码控制,且可以设定某些地方不会暂停(比如UI动画),弊端是如果想暂停,所有动画相关都要与Time.deltaTime这个字段绑定。
(3)如果游戏暂停以后想在暂停界面上继续播放一些不受Time.timeScale 影响的动画或者粒子特效之类的,那么我们就需要用到Time.realtimeSinceStartup去单独恢复他们,还有声音部分也需要单独恢复timeScale。
(4)以前看到一种实现暂停的方法是放弃Time.deltaTime,自己实现两个函数:OnPauseGame和 OnResumeGame。这种方法扩展性强,缺点是写起来可能比较繁琐。
补充有关于暂停的相关有个帖子还是不错的 http://www.xuanyusong.com/archives/2956
相关文章推荐
- Unity中游戏暂停和开始怎么实现?
- 用unity编写游戏的时候,怎么实现跟BattleGround一样的鼠标效果
- 怎么实现下载 实现下载 暂停 又开始下载
- 著名游戏开发引擎Unity开始免费提供发布到安卓和iOS功能
- Unity 简单游戏编程(1) 开始界面设计
- 怎么使游戏按下home的时候进入暂停状态 然后再次进入点击按钮恢复?
- Handler和ProgressBar实现进度条的开始,暂停,停止,后退和循环
- cocos2d-x 实现按Home和待机键后,再进入游戏显示暂停界面
- Unity开发安卓游戏:1.实现移动设备屏幕自适应
- 实现游戏暂停与恢复功能
- 今天开始做游戏统一建模工作UML和功能实现
- 【史上最坑爹的游戏】001 游戏介绍及开始页面的实现
- 怎么实现秒表的功能??有个按钮,一按开始计时,再按停止
- 暂停分享游戏教程系列文章,开始关注IT人
- 从拼图游戏开始(六)_游戏主体的Android实现
- [unity基础教程]Unity3D实现动态加载游戏资源(转)
- 实现 iPhone 游戏暂停功能的方法
- 今天和大家讲一下怎么实现秒表这个功能Chronometer。很多地方都要用到秒表这个功能,比如视频录制,游戏(1)
- 通过Unity引擎可实现小规模的人员开发游戏
- Unity游戏暂停(Update与FixedUpdate区别)