IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE4拖拽物品的实现 -> 正文阅读

[游戏开发]UE4拖拽物品的实现

一、 Input事件列表

看了Input事件列表、本以为用OnDrag和OnDrop两个事件就能完成
在这里插入图片描述

二、准备UMG蓝图

  1. 创建目标蓝图ItemSlot,待拖动的Item,里面只有一张图片
    在这里插入图片描述
  2. 创建移动中显示的蓝图ItemSlotDraging,相较于ItemSlot多了个Text标识用于区别显示

在这里插入图片描述
3. 创建目标Item蓝图载体,或者称为背景蓝图

在这里插入图片描述

三、编写代码逻辑

过程中共使用了三个输入事件OnMouseButtonDown、OnDragDetected、OnDrop

  1. 打开关卡蓝图,将UI蓝图渲染到屏幕上,允许输入事件,将鼠标显示出来在这里插入图片描述
  2. 使用OnMouseButtonDown设置为左键按下拖拽触发的方式,根据OnMouseButtonDown的解释可以看出,这个方法应该写在目标拖拽蓝图中,即复写ItemSlot中的OnMouseButtonDown,注意ReturnNode需要传入一个参数在这里插入图片描述
    在这里插入图片描述
  3. 使用OnDragDetected编写拖动的逻辑,根据OnDragDetected的解释:当一个控件即将被拖动时调用,得知应该复写ItemSlot中的OnDragDetected方法在这里插入图片描述
    在这里插入图片描述

注:

  • 拖动时创建控件ItemSlotDraging,传入ClassItemSlotDraging
  • 将拖动生成的控件赋值给DragVisual,即拖拽时的显示
  • CreateDragDropOperation中的Class选择DragDropOperation类或自己新建的DragDropOperation类型的蓝图
  • CreateDragDropOperation中的Pivot与Offset决定了鼠标指针与移动控件的相对位置
  • 这里将self传递过去相当与一个参数传递
  1. 通过OnDrop函数移动位置,根据OnDrop函数的解释:当玩家将一个东西丢弃到Widget上时出发,可知改Widget应该是背景蓝图,相当与该示例中的UI蓝图,所以应该复写UI中的OnDrop方法
    在这里插入图片描述
    在这里插入图片描述

注:

  • 从Operation中取得Payload,这里存储着上一步传递过来的UI蓝图上的目标ItemSlot用于更改位置操作

  • 从图四UI蓝图可以看出UI上的ItemSlot的位置是由CanvasPanelSlot的PostionX和PositionY决定的,所以这里先取到CanvasSlot再更改位置

四、结果

在这里插入图片描述

在这里插入图片描述

五、注意

  • UI蓝图中的蓝底Image不仅仅是突出物品Item的显示,在本例中还控制了OnDrop的响应区域,因为UI中没有多余的控件了
  • 因为UI蓝图中ItemSlot的Alignment是item的中间,所以OnDragDetected中的CreateDragDropOperation节点中的Pivot选择CenterCenter想呼应,会使刚拖拽或刚丢弃时的操作更顺滑,否则如果不对应会有明显的偏移。(Pivot还可以选择MouseDown,表示鼠标按下时的相对位置)
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:05:52  更:2021-12-02 17:07:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:29:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码