拖拽物体的方法:UE5 UI中的物体拖拽方式

发布时间:2023-12-19 12:59:06 浏览量:209次

目标:UE5在Runtime下现实UI拖拽三维物体--Actor,拖拽结束后生成Actor物体

先看效果




步骤1. 创建UE5工程

新建UE5的C++空白项目,记得选择C++,初学者包可以根据自己需要选择是否勾选,命名为UIDragActor


新建文件夹UIdragDrop,本期借此机会学习一个GamePlay游戏框架。

步骤2. 创建一个新的GameMode

在WorldSettings面板中点击GameMode override右边的+号,创建新的GameMode

这种创建方式,系统会自动使用新创建的BP_UIGameMode。

步骤3. DefaultPawnClass在这里直接第三人称BP_ThirdPersonCharacter.

拷贝系统的第三人称BP_ThirdPersonCharacter放到新建的文件夹中,并且BP_UICharater。

步骤4.创建HUD用于UI交互

点击右边+号创建HUD,命名为BP_HUD

步骤5.创建Player Controller Class

同样创建BP_UIPlayerController

步骤6.创建UI

创建主UIWBP_Main,然后在BP_HUD中创建并且显示出来

步骤7.创建拖拽UI

创建拖拽图标UI并且放到主界面WBP_Main中

步骤8.创建拖拽预制体

创建Actor命名为BP_Cube作为我们的模型物体,为BP_Cube增加静态网格组件Static Mesh

选择立方体网格,为它创建一个你喜欢的材质


步骤9.编写拖拽UI的交互代码

1:在WBP_DragUI蓝图中重载,首先要检测到鼠标移动到UI图标上面,所以重载

OnMouseButtonDown函数,


2:检测鼠标的拖拽事件,并且判断是鼠标左键

3:判断到左键拖拽事件以后,接下来需要接受拖拽信息



拖拽UI运行结果:

步骤10.拖拽结束后生成Actor

1:重载取消拖拽事件EventOnDragCancelled

2:获取鼠标在视口中的位置,并且把屏幕位置转化成世界位置

3:使用射线检测LineTraceByChannel

运行看一下结果,射线是出来了,但是位置不准确有偏差,偏差的原因是分辨率引起的,解决方法是增加

4:通过鼠标在屏幕中位置乘以视口分辨率,来矫正位置,结果就应该是正确的

步骤11.通过打点的位置生成物体Actor

1:既然位置现在是正确了,接下来在这个位置上生成物体即可

2:运行看到第一种方式拖拽UI可以正确生成Actor了

热门课程推荐

热门资讯

请绑定手机号

x

微信扫码在线答疑

扫码领福利1V1在线答疑

点击咨询
添加老师微信,马上领取免费课程资源

1. 打开微信扫一扫,扫描左侧二维码

2. 添加老师微信,马上领取免费课程资源

同学您好!

您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
确定