码迷,mamicode.com
首页 > 编程语言 > 详细

【Unity游戏开发之一】Time.timeScale=0暂停游戏的情况下播放动画

时间:2015-07-27 14:58:06      阅读:1018      评论:0      收藏:0      [点我收藏+]

标签:unity   timescale   animation   pause   time.timescale   

前提条件:在项目中用过Time.timeScale = 0来实现游戏暂停

问题: 暂停游戏后,暂停界面的按钮可能需要播放一个idle时的动画,Time.timeScale=0 会影响动画播放。


受Time.timeScale影响的因素:

1.物理模拟. FixedUpdate - 当Time.timeScale=0时,FixedUpdate 函数不会被执行。

2.Coroutines. - Time.timeScale=0 协程函数不会停止,但是会停止WaitForSeconds. 协成函数还是会每一帧都触发,但是WaitForSeconds使用的是当前的Time.deltaTime会变成0

3.Invoke  InvokeRepeating. -延迟一段时间后掉用指定函数.

4.Particle System 粒子系统.

5.Animations. -动画. 如果我们使用的是Animator,可以设置动画忽略Time.timeScale带来的影响. 只需要把UpdateMode设置为UnScaled Time,设置如下:

技术分享


不受 Time.timeScale影响的因素:

1.Update - Time.timeScale不会影响Update的调用,Update会一直被调用。但是如果Time.deltaTime=0,如下实现不会工作:

function Update () {
    // Move the object 10 meters per second!
    var translation = Time.deltaTime * 10;
    transform.Translate (0, 0, translation);
}
2.OnGUI -OnGui和对应的事件实现原理不基于Time.timeScale,所以也不会受影响。


参考:


版权声明:本文为博主原创文章,未经博主允许不得转载。

【Unity游戏开发之一】Time.timeScale=0暂停游戏的情况下播放动画

标签:unity   timescale   animation   pause   time.timescale   

原文地址:http://blog.csdn.net/teng_ontheway/article/details/47084273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!