基于官方Creating Drag and Drop UI实现:https://docs.unrealengine.com/en-us/Engine/UMG/HowTo/DragAndDrop
创建四个类
DragWidget就是拖拽中UI,跟随鼠标光标移移动效果UI
HealthBar就是需要被拖拽血条,里面实现鼠标是否拖拽判断处理
HUD就是拖拽HealthBar到这主面板摆放地方,检测需要摆放位置
WidgetDrag存放DragWidget就是拖拽中UI,官方引擎提供接口
如果按照官方教程步骤实现完,最终发现不能实现拖拽效果,具体不知道官方教程怎么实现拖拽;
问题点就是卡住官方下面例子:
断点查看HealthBar里OnDragDetected检测函数Create DragWidget Widget 节点确实创建了DragWidget 类,但是没有执行该类
DragWidget 的EventConstruct 构造函数事件通知,具体查看官方别人遇到类似问题解决办法:
https://answers.unrealengine.com/questions/715713/widget-events-arent-called.html
但是还不能解决问题。
本人的解决办法就是:官方创建DragWidget,其对象没有添加到屏幕窗口或其他控件(已经添加到屏幕窗口),HUD一开始添加到屏幕窗口,我们可以通过把创建DragWidget对象添加到HUD,最后运行DragWidget 的EventConstruct 构造函数开始执行通知了,最终实现官方拖拽效果。如下:
ThirdPersonCharacter声明变量CurHud存放HUD对象引用
HealthBar类里OnDragDetected函数里把创建了DragWidget添加到父类HUD对象CurHud,如下