您的位置:首页 > 移动开发 > Unity3D

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

2015-07-27 14:34 1796 查看
前提条件:在项目中用过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,所以也不会受影响。

参考:

http://gamedevdocket.blogspot.com

http://answers.unity3d.com/

https://unionassets.com/blog/playing-animation-with-time-timescale-0-339
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: