UE4官方Creating Drag and Drop UI遇到问题解决

 

基于官方Creating Drag and Drop UI实现:https://docs.unrealengine.com/en-us/Engine/UMG/HowTo/DragAndDrop

创建四个类

UE4官方Creating Drag and Drop UI遇到问题解决_第1张图片

DragWidget就是拖拽中UI,跟随鼠标光标移移动效果UI

HealthBar就是需要被拖拽血条,里面实现鼠标是否拖拽判断处理

HUD就是拖拽HealthBar到这主面板摆放地方,检测需要摆放位置

WidgetDrag存放DragWidget就是拖拽中UI,官方引擎提供接口

 如果按照官方教程步骤实现完,最终发现不能实现拖拽效果,具体不知道官方教程怎么实现拖拽;

问题点就是卡住官方下面例子:

UE4官方Creating Drag and Drop UI遇到问题解决_第2张图片

UE4官方Creating Drag and Drop UI遇到问题解决_第3张图片

断点查看HealthBar里OnDragDetected检测函数Create DragWidget Widget 节点确实创建了DragWidget 类,但是没有执行该类

DragWidget 的EventConstruct 构造函数事件通知,具体查看官方别人遇到类似问题解决办法:

https://answers.unrealengine.com/questions/715713/widget-events-arent-called.html

UE4官方Creating Drag and Drop UI遇到问题解决_第4张图片

但是还不能解决问题。

本人的解决办法就是:官方创建DragWidget,其对象没有添加到屏幕窗口或其他控件(已经添加到屏幕窗口),HUD一开始添加到屏幕窗口,我们可以通过把创建DragWidget对象添加到HUD,最后运行DragWidget 的EventConstruct 构造函数开始执行通知了,最终实现官方拖拽效果。如下:

ThirdPersonCharacter声明变量CurHud存放HUD对象引用

UE4官方Creating Drag and Drop UI遇到问题解决_第5张图片

HealthBar类里OnDragDetected函数里把创建了DragWidget添加到父类HUD对象CurHud,如下

UE4官方Creating Drag and Drop UI遇到问题解决_第6张图片

你可能感兴趣的:(UE4界面)