记录UE4 Play Montage 中的一些坑

先说说发现这个坑的由来,本人最近在做一款ACT战斗框架,需要用到人物的状态模式,在动画合适的时候插入动画通知依次来改变人物的状态。播放动画采用的是Montage Play这个节点。于是在某次测试中发现人物当前并没有到达重置状态(需要动作播放完成才会重置)的时候就重置了。最后查找了近半天的时间,最后把问题锁定在Montage Play 这个节点上!
就是这货!!!
记录UE4 Play Montage 中的一些坑
会发现他有一个Stop All Montages的属性,默认是勾上的。从字面意思看是停止播放的蒙太奇以外的蒙太奇。难道紧紧是这样么?
这里我再来理一下,播放蒙太奇其实有三个以上的节点分别是:
Play Montage 该节点只能在事件中调用,因为是有时间的概念,所以不能用在任何无时间观念的地方上,例如函数,宏。
记录UE4 Play Montage 中的一些坑
Play Montage 以及 Play Anim Montage,可以发现两者最主要的差异就是这个Stop All Montages
记录UE4 Play Montage 中的一些坑
我们言归正传,Stop All Montages 紧紧是是取消播放蒙太奇这么简单么?当时我锁定该节点后,便进行了测试,取消了Stop All Montages的勾选,不出所料,问题解决了。因为我的重置状态是在动画蒙太奇用通知设定的。于是猜想Stop All Montages 不紧紧停止了播放蒙太奇,还把蒙太奇中附带的所有通知一并调用了End事件!
接下来便开始实验:
创建一个用于测试的NotifyState
在通知中覆盖Begin和End事件:
记录UE4 Play Montage 中的一些坑记录UE4 Play Montage 中的一些坑
这两个函数的作用就是,通知开始时打印NotifyBegin ,通知结束时打印NotifyEnd

随后在播放的蒙太奇中绑定该通知。
记录UE4 Play Montage 中的一些坑
随后在事件图表中,用以下蓝图进行Dubbger。
记录UE4 Play Montage 中的一些坑
首先取消Stop All Montages进行实验
记录UE4 Play Montage 中的一些坑
可以开出播放的时间时正确的。Notify有被正确打印。

接下来勾选Stop All Montages
记录UE4 Play Montage 中的一些坑
结果就是Stop All Montages 取消播放蒙太奇的同时,会取消该蒙太奇中所有的通知!

建议大家以后播放蒙太奇还是多用用Play Anim Montage这个节点,解决这个Bug花费了我太多的精力,并且官方也没有很好的文档。
以下是官方文档对该节点的解释。。。。

看得我想好好问问他们的编写文档的人,这也能叫文档啊????记录UE4 Play Montage 中的一些坑

上一篇:POJ 1837 Balance 水题, DP 难度:0


下一篇:UE4--蓝图的挖掘