最近有些工作,在研究UE5 蓝图的LevelSequence,来制作一些简单动画。做个笔记,记录一下动画更换绑定actor的操作,以及动画播放后如何暂停和继续。

一. 运行时生产LevelSequence并绑定给一个新的actor

1. 创建一个LevelSequence

这里是一个简单的位置平移LevelSequence,一共就2个关键帧,动画持续90帧,也就是3秒.其中绑定的actor可以是关卡中的任意actor, 比如我这里就直接图省事,绑定了test蓝图.

2. 添加蓝图逻辑

这里是我获取了包含Test标签的一个actor, 如果直接在这里生成一个actor,或者使用一个变量传递都是可以的. 截图中的"获取序列绑定"节点,需要选中之前创建的LevelSequence,以及当时绑定的actor. 这里我把生成的播放器加入到了一个PlayerList中, 用来在后续事件中对其进行暂停和继续播放的操作.

二. 对LeveSequence Player进行暂停与继续播放

1. 暂停

暂停操作是比较简单的, 其实只有一个节点, 蓝图逻辑如下:

2. 继续播放(误)

一开始我想, 可以直接按照暂停的逻辑描写, 于是我这样写的蓝图: 

但是这次发现了问题, 如果暂停操作是在播放结束之前, 那么继续播放也没有问题; 但是如果暂停操作是在播放结束后, 那么暂停后再对其播放, 会导致动画从头再度进行一次播放, 而这明显不是我们的初衷.

3. 继续播放(正确版)

因此, 我对其进行了一个检测, 如果动画的当前事件与动画结束时间相同,则不播放, 不相同时(也就是说暂停时播放并未完成) 调用播放节点. 这样下来目前来看可以正常使用了. 

三. 总结

UE中实在是有很多没测试根本想不到的逻辑... 但是这次遇到的问题还算很容易解决的, 办法也很多. 比如在暂停时检测播放时间, 或者在暂停时调用"正在播放中"节点来获取播放状态, 都可以判断出有没有播放结束, 然后再删除PlayerList中的相应值即可.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐