前提条件: 在项目中用过 Time.timeScale = 0 来实现游戏暂停
问题: 暂停游戏后, 暂停界面的按钮可能需要播放一个 idle 时的动画, Time.timeScale=0 会影响动画播放.
受 Time.timeScale 影响的因素:
1. 物理模拟. - 当 Time.timeScale=0 时, FixedUpdate 函数不会被执行.
2.. - Time.timeScale=0 协程函数不会停止, 但是会停止 WaitForSeconds. 协成函数还是会每一帧都触发, 但是 WaitForSeconds 使用的是当前的 Time.deltaTime 会变成 0
3. 和 . - 延迟一段时间后掉用指定函数.
4. 粒子系统.
5.. - 动画. 如果我们使用的是, 可以设置动画忽略 Time.timeScale 带来的影响. 只需要把 UpdateMode 设置为 UnScaled Time, 设置如下:
不受 Time.timeScale 影响的因素:
1. - Time.timeScale 不会影响 Update 的调用, Update 会一直被调用. 但是如果 = 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://lib.csdn.net/article/unity3d/36873