[学习记录] Unity设置游戏暂停时继续播放UI动画的方法


缘由

在学习Unity的过程中,有一个需求,希望在暂停游戏内容的同时,调出UI界面,UI界面有一个动画会在UI的endUI.SetActive(ture);时进行播放.
但是当我设置Time.timeScale = 0f;后,动画并没有进行播放.
发现设置timeScale后,动画的播放也会收到影响.
于是开始找解决方法.

其他参考

以下是我找到的部分解决方法:
使用realtimeSinceStartup来获得时间用以控制UI位置
使用realtimeSinceStartup重写的一份可以在暂停时间时播刚体动画的Play函数

我的解决方法

如果您把上面第二个链接的所有回复看完了,您会发现最后那位老哥说要修改 AnimatorUpdate Mode 属性,将其设置为 Unscaled Time.
事实上,我最终的解决方式也是这样的.

原理

官方文档

  • Update Mode
    此选项允许您选择 Animator 何时更新以及应使用哪个时间标度。
    - Normal
    Animator 与 Update 调用同步更新,Animator 的速度与当前时间标度匹配。如果时间标度变慢,动画将通过减速来匹配。
    - Animate Physics
    Animator 与 FixedUpdate 调用同步更新(即,与物理系统步调一致)。如果要对具有物理交互的对象(例如可四处推动刚体对象的角色)的运动进行动画化,应使用此模式。
    - Unscaled Time
    Animator 与 Update 调用同步更新,但是 Animator 的速度忽略当前时间标度而不顾一切以 100% 速度进行动画化。此选项可用于以正常速度对 GUI 系统进行动画化,同时将修改的时间标度用于特效或暂停游戏。

简单理解

Normal

就是一个普通电影或者动画片,当我们按下暂停或者快进后 (游戏暂停或快进) ,里面的所有动作都会停止或加速 (对应到动画的暂停或加速)

Animate Physics

当我们快进或暂停电影时,里面的和物理相关的动画还是照常,而其他行为接着快进或暂停
好比看某些学习资料时,不重要的剧情快进,重要的物理交互仔细观赏

Unscaled Time

电影里有一个能在暂停时间的世界里自由活动的 人 吸血鬼?

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值