MVVM Binding界面 Copy/Paste和Undo/Redo 功能不对+崩溃

跨WBP Copy/Paste 一个带有转换函数, 且参数进行绑定的条目崩溃

复现步骤​

1.新建一个ViewModel,添加一个Integer类型属性Num

2.WBP1和WBP2都添加该ViewModel

3.在WBP1的View Binding界面点击AddWidget,右侧选To Text(Integer)转换函数, 参数Value绑定到Num属性, 如下图

[Image Removed]

4.选中这条绑定按Ctrl+C

5.在WBP2的View Binding界面点击AddWidget添加一个空绑定(绑定列表完全空的时候无法粘贴), Ctrl+V, 触发崩溃

[Image Removed]

该问题的PR​

https://github.com/EpicGames/UnrealEngine/pull/15042

撤销对于 Event和Condtion​ 支持有问题, 存在销毁pin对象访问操作, 概率会崩溃, 不崩溃时表现也不对,用Event举例

​复现步骤

1.新建一个ViewModel,添加一个函数TestFunc, 带有一个Integer类型参数Num

2.WBP1添加该ViewModel,添加一个按钮控件

3.View Binding界面给按钮的点击事件绑定TestFunc, 如下图

​ [Image Removed]

4.按Ctrl+Z, 概率因为访问销毁的Pin触发崩溃,不崩溃时会有残留的引脚,表现如下图

​ [Image Removed]

5.如果前面没崩溃,按Ctrl+Y,右侧函数会回复,但是参数显示还是有问题,如下图

​ [Image Removed]

​前面访问销毁Pin崩溃的堆栈

[Image Removed]

​该问题的PR​

https://github.com/EpicGames/UnrealEngine/pull/15058

[Attachment Removed]

Steps to Reproduce
见​Description

[Attachment Removed]

Hello, 第一个问题我试了下,5.8最新代码版本,我这里没有崩溃。因该是修复了,可以试下5.8.1看看,或者直接拉最新的5.8 Release代码试下

[Attachment Removed]

第二个问题,确实会有,我查了下我们貌似还没改,我看看能不能绕过去,晚点在这里更新。

[Attachment Removed]

好的, 感谢

[Attachment Removed]

我看了下代码后问题出在设置 Function 时,Function 的参数没有被作为一个有效的 Pin 序列化进transaction。这样 Undo 的时候,Transaction 系统没能正确移除这个参数 Pin,导致 Redo 之后界面状态和底层数据不一致,残留了本该被清理的变量条目,点击时就崩溃了。我试图改了下,但是牵扯比较多,所以我就提了个Jira让UMG团队的同事去修了。暂时绕行的方法是,点一下前面的Checkbox,让状态强制刷新下能好,稍微麻烦点。

[Attachment Removed]

OK

[Attachment Removed]