在 UUMGSequencePlayer 中的 Pause 为什么会给 PlayerStatus 赋 Stopped ?

在使用 UMG 的动画过程中发现,一旦我的动画调用过 Pause,就无法通过调用 Stop 实现 Reset 的目的;如果期望 Reset,则需要二次 Play 再 Stop。

浏览 UE 的源码发现,Pause 时会给 PlayerStatus 赋值为 EMovieScenePlayerStatus::Stopped;而 Stop 时则判断为 Stopped 就不再继续了。

在 Puase 中有注释写这一赋值时为了不再触发 OnFinish 的事件,但是为什么不通过赋值为 EMovieScenePlayerStatus::Paused 来解决问题呢?或者 Reset 的行为是否可以抽出来作为一个单独的方法支持业务调用?

我十分好奇这一操作的背后原因,或者 UE 是否有更好的方法实现 Reset ?

感谢您的解答!

Hi, 您好。我看了下这应该是重构的时候保留了老的代码。可能是老的代码如果用Pause会有一些系统没有处理Pause消息而只处理Stop消息打的补丁。我今天问下UMG团队相关的情况。谢谢

非常感谢您的回复,也十分期待后续关于 UMG 动画 Reset 的解决方案。​如果有相关的解决方案,感激不尽。

您好,我得到UMG团队的回复,作者是11年前写的这部分代码,当时可能并没有Pause这个状态,所以就用Stop,但是年代实在太久远了,具体原因已经不可查了。您可以改成Pause试下,我觉得应该不太会有问题。

好的,非常感谢您的回复与帮助!我将优先按照 Pause 这个状态的思路进行尝试,有任何结果都会再来反馈。辛苦您和 UMG 团队了,感谢付出的宝贵时间。