在UE5中制作可拖动的控件

在这篇文章中,我们将探讨如何在 UE 中制作可拖动的控件。部分内容源自虚幻引擎中的文档,因此如果有任何不清楚的地方,可以从文档中查找。

制作可移动标题栏

这里的关键是要创建一个代表窗口顶部的控件,拖动该控件相当于移动整个窗口。

标题 文本绑定到变量Title

创建另一个用户控件类的变量"ParentWidget",并使其实例可编辑并在生成时公开。

我们可以通过使父窗口控件不可见来实现"关闭"按钮功能。

OnMouseButtonDown事件

现在我们已经创建了基本的控件,接下里要覆盖"OnMouseButtonDown"的功能。

将鼠标悬停在左侧的FUNCTIONS 选项卡上,可以看到弹出"Override"选项。单击该按钮并找到"OnMouseButtonDown"功能。

这样我们我们就获得了鼠标事件,它给了我们绝对坐标。不同之处在于,我们不要使用该部件的Geometry ,而是使用父控件Geometry 。因为我们要移动的是父窗口控件。

我们将此 Vector2D 存储为变量**"Drag Offset"** ,然后就可以开始检测拖动了。

检测拖动

当检测到拖动时,我们想要创建一个用于拖动效果 的部件。

这其实是可选的,我们可以根据要求对其进行自定义。本质上,它是一个小部件,当我们用鼠标拖动时,会看到它跟着四处移动。

我们还需要考虑与此相关的 3 件事:

  • 拖动小部件
  • 拖放操作
  • 放开功能

拖动小部件

拖动小部件 将用于直观地表示我们的窗口,可以根据要求进行设计。

这里我们只有一个带有颜色的 Sizebox 和 Border 组件。

我们需要向此小部件添加**Widget Reference**变量,并使其实例可编辑并在生成时公开

对于事件图,我们在Event Construct 上进行实现。

我们主要做的事情是:

  • 将父窗口控件设置为隐藏(因为这个窗口小部件是可见的)
  • 使用父窗口控件的尺寸更新窗口小部件size box的尺寸

因此,当我们创建拖动小部件时,它会使父窗口控件不可见,并且其大小也适合父窗口控件。

拖放操作

这是一种UE蓝图。我们创建新的蓝图时,搜索"drag drop"可以找到它。

我们创建一个将其命名为"WidgetDrag"。

在**"On Drag Detected"事件上我们通过在 "Create Drag Drop Operation"上选择它来创建此部件,然后在类下选择它 。**

我们在这里唯一需要添加的是两个变量:**WidgetReference**** 和 **DragOffset** 。**

确保它们都是实例可编辑的并且在生成时公开。

Drop功能

最后一部分实际上是检测drop后的部件并更新效果。这是通过我们的另一个带有画布的部件完成的。

该部件主要包含画布面板 和我们将移动的部件。

我们需要确保将可见性设置为visible ,并且如果不是默认设置,则设置为可变。

目前,我没有注册自定义输入,因此我使用以下方法手动更新部件的可见性:

现在我们想要执行 On Drop 行为,这是我们使用WidgetDrag 的地方。这部分主要是获取存储的小件引用拖动偏移量

主要流程:

  • 开始拖动窗口
  • 记下鼠标相对于部件(而不是屏幕)的位置
  • 将窗口拖放到新位置
  • 记下当前位置
  • 在新的鼠标位置重新添加部件,通过初始拖动进行调整

将窗口链接到您的父窗口控件

最后,我们需要将可移动标题栏 控件链接到父控件上。

例如,下面是创建的人物装备控件:

事件构造 中,将**Movable Title Bar****Parent Widget**设置为 self,这意味着每当玩家移动标题栏时,它就会移动该控件

相关推荐
ricky6752 天前
[Linux]Linux系统的20个实用命令详解
ue5
AA陈超3 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-01.创建游戏玩法标签
c++·游戏·ue5·游戏引擎·虚幻
reddingtons4 天前
场景美术师的“无限画板”:UE5中非破坏性的材质混合(Material Blending)工作流
ue5·材质·设计师·技术美术·游戏策划·游戏美术·substance
m0_552200824 天前
《UE5_C++多人TPS完整教程》学习笔记61 ——《P62 武器开火特效(Fire Weapon Effects)》
c++·游戏·ue5
努力的小钟4 天前
UE5 GAS GameAbility源码解析 EndAbility
ue5
AA陈超4 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-04 使用效果应用游戏标签
c++·游戏·ue5·游戏引擎·虚幻
zhangzhangkeji4 天前
UE5 测量 -1,长度测量:P2制作定位球与定位线,P3制作射线检测节点,P4在鼠标位置生成定位球
ue5
AA陈超5 天前
虚幻引擎UE5专用服务器游戏开发-33 在上半身播放组合蒙太奇
c++·游戏·ue5·游戏引擎·虚幻
zhangzhangkeji5 天前
cesium126,230130,Editing Tileset Materials - 0,编辑瓦片集材质,官方教程:
ue5
zhangzhangkeji5 天前
cesium126,230131,区域局部染色:赋值材质实例,建立“材质图层混合”文件,建立裁剪多边形,并应用自己的材质实例
ue5