【UE】从UI中拖拽生成物体

这篇具有很好参考价值的文章主要介绍了【UE】从UI中拖拽生成物体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

效果

步骤

一、准备工作 

二、创建UI

三、创建Actor

四、拖拽生成Actor的逻辑


效果

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

步骤

一、准备工作 

1. 首先新建一个第三人称模板工程

2. 新建一个游戏模式基础,这里命名为“BP_UIGameMode”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

在世界场景设置中设置游戏模式覆盖为“BP_UIGameMode”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

3. 复制一份“ThirdPersonCharacter”作为默认的pawn类,这里更改命名为“BP_UICharacter”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

4. 新建一个HUD类,这里命名为“BP_UIHUD”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

5. 新建一个玩家控制器类,这里命名“BP_UIPlayerController”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

6. 在选中的游戏模式中设置默认pawn类、HUD类、玩家控制器类为上面新建的

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

7. 为了能够在游戏运行时显示鼠标,可以打开玩家控制器“BP_UIPlayerController”,勾选“显示鼠标光标”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

8. 此时运行游戏发现可以通过鼠标左键和鼠标右键控制摄像机的朝向,但是我们的目标是通过鼠标左键来实现拖拽效果的。因此需要打开“BP_UICharacter”,做一些修改。

首先添加一个布尔类型的变量,这里命名为“isCanTurn”,用于表示此时是否能够控制摄像机转向

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

在事件图表中添加如下节点,表示当按下鼠标右键时,可以控制摄像机转向,松开后就不能转向了

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

修改控制摄像机转向的逻辑,设置只有变量“isCanTurn”为True时才可以的转动摄像机

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

9. 删除场景中的“ThirdPersonCharacter”。此时运行游戏可以发现只能通过鼠标右键控制摄像机的旋转,鼠标左键无法再控制摄像机的旋转了。

二、创建UI

1. 首先创建一个铺满整个屏幕的控件蓝图,这里命名为“WBP_Main”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

2. 打开“BP_UIHUD”,在事件图表中添加如下节点,使得控件蓝图“WBP_Main”能够被渲染到视口上

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

3. 接下来制作拖拽部分的UI,新建两个控件蓝图,这里分别命名为“WBP_DragUI”和“WBP_DragActor”,一个表示通过拖拽出图片来生成模型,另一个表示直接拖出模型

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

4. 先打开“WBP_DragUI”,设置自定义大小

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

删除画布面板

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

添加一个尺寸框控件

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

设置尺寸框的“宽度覆盖”和“高度覆盖”均为100

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

在尺寸框中添加一个图像控件

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

设置一下图像和图像着色

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

5. 接下来设置第二个控件蓝图“WBP_DragActor”,打开“WBP_DragActor”,这里除了颜色不同,其他所有地方和“WBP_DragUI”保持一致

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

6. 打开主界面“WBP_Main” ,将控件蓝图“WBP_DragUI”和“WBP_DragActor”拖入

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

此时运行游戏可以发现控件蓝图已经被添加到视口中

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

三、创建Actor

我们想从UI中通过拖拽的方式生成Actor,首先我们需要创建一个Actor蓝图,这里就命名为“BP_Cube”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

打开“BP_Cube”,添加一个立方体形状的静态网格体

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

注意设置立方体没有碰撞

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

四、拖拽生成Actor的逻辑

1. 首先打开“WBP_DragUI”,添加一个覆盖函数,选择“按下鼠标按钮时”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

我们需要在鼠标按下时侦测是鼠标哪个按键按下,这里设置的只侦测鼠标左键

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

再添加一个覆盖函数“发现拖动时”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

当检测到鼠标拖动时,创建一个和自身一模一样的控件。由于上一步设置的只侦测鼠标左键的拖动事件,因此这里通过鼠标右键拖动是不会侦听到的。

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

此时效果如下:(鼠标左键按下UI不松,可以拖出UI)

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

 接下里我们就要在鼠标松开的时候生成actor,继续在“WBP_DragUI”中添加一个“拖动取消时”的重载函数

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

逻辑如下

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

此时已经可以通过拖拽出UI来生成actor了,效果如下:

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

为了增加代码复用性,我们新建一个蓝图函数库

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

这里命名为“BP_FunctionLibrary”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

在蓝图函数库中新增一个函数,这里命名为“LineTraceReturnLocation”,表示射线检测返回射线碰撞位置

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

为该函数添加一个向量类型的输出,命名为“HitLocation”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

函数内容如下

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

2. 回到“WBP_DragUI”,将拖动取消时事件的相关代码简化:

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

3. 下面制作从UI拖出Actor来生成Actor的功能,打开控件蓝图“WBP_DragActor”

同样的,添加一个“按下鼠标按钮时”的覆盖函数

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

函数逻辑如下:同样需要添加一个对鼠标左键拖动的侦听,然后生成一个Actor,其中变量“IsCubeCanMove”表示生成的方块是否可以进行移动

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

此时运行游戏发现只能在鼠标按下时生成方块但是无法拖动。

4. 打开主界面“WBP_Main” ,在图表中添加覆盖函数“鼠标移动时”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

该函数逻辑如下

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

再添加“松开鼠标按钮时”

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

松开时设置方块不能移动

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

此时运行发现生成的Actor只能在小UI范围内拖动,因此我们需要在“WBP_Main”中再添加一个底图

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

设置锚点

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

设置完全透明

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

设置这个透明背景在最底层

【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

此时运行效果如下:

 【UE】从UI中拖拽生成物体,虚幻4,虚幻5,1024程序员节,UE

相关文章:

【UE】两步实现“从UI中拖出Actor放置到场景中”-CSDN博客

下一篇:

【UI】从UI拖拽生成物体 —— 更改位置与定点销毁-CSDN博客

本篇参考视频:

https://www.bilibili.com/video/BV1mU4y117z9/?spm_id_from=333.999.0.0&vd_source=36a3e35639c44bb339f59760641390a8文章来源地址https://www.toymoban.com/news/detail-738383.html

到了这里,关于【UE】从UI中拖拽生成物体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4/UE5 虚幻引擎,Pawn的碰撞,怎么防止Pawn移动的时候穿透物体。

    前言:在UE项目开发中,有些我们需要自己新建一个Pawn来控制视角,但是如果我们没有设置Pawn的碰撞,那么Pawn在移动的过程中,很容易穿到Actor里面。而有的时候我们并不需要Pawn穿过物体,就必须要给Pawn增加碰撞。 1、新建一个Pawn类。 2、 添加FloatingPawnMovement(必须添加这

    2023年04月12日
    浏览(75)
  • 【虚幻引擎UE】UE5 UI三种使用模式

    蓝图创建控件并添加到视口 场景中的显示效果: 1、创建Actor,放入用户控件,并将Actor拖入场景。 这种模式默认无法进行交互,但可播放动画。 1、在二的基础上,添加虚拟控件交互组件到角色身上。 2、在角色蓝图里加上:

    2023年04月10日
    浏览(63)
  • 1024 程序员节,圆一个小小的梦

    Hope is a good thing, maybe the best of things, and no good thing ever dies. 希望是件美丽的东西,也许是最好的东西,而美好的东西是永远不会消逝的。 大家好,我是勇哥 。 1024 , 程序员节,圆了我一个小小的梦。 花了半年时间,我写了一本电子书 ,书名是:《 RocketMQ4.X设计精要 》,我想

    2024年02月08日
    浏览(72)
  • 程序员帮助程序员!用1024拼出更美好的云计算未来

    中国的云计算市场是全球增长最快的。据预测,中国公共云服务市场的全球份额将从 2020 年的 6.5% 增加到 2024 年的 10.5% 以上。 伴随行业的迅速发展,催生了云计算相关人才需求的井喷增长,供需矛盾凸显。据德意志银行分析报告,越来越多IT企业关闭了线下IDC,开始把业务迁

    2024年02月16日
    浏览(61)
  • 解决github ping不通的问题(1024程序员节快乐!

    1024程序员节快乐!( 随便粘贴一个文档,参加活动 域名解析(域名-IP):https://www.ipaddress.com/ Ubuntu平台 github经常ping不通或者访问缓慢,方法是更改hosts文件 在hosts里添加github的ip 140.82.114.4 www.github.com 199.232.5.194 github.global.ssl.fastly.net 54.231.114.219 github-cloud.s3.amazonaws.com 可以访

    2024年01月18日
    浏览(80)
  • 1024程序员节特辑:【Spring Boot自动配置原理揭秘】

    主页传送门:📀 传送   Spring Boot 是一个用于创建独立的、生产级别的 Spring 应用程序的框架。它极大地简化了 Spring 应用程序的开发过程,其中一个关键的功能就是自动配置(Auto-Configuration)。   自动配置可以根据项目需求自动配置各种服务和组件,它可以帮助开发者

    2024年02月08日
    浏览(69)
  • 好用且免费的CodeWhisperer,给1024程序员节送礼来了

          国庆期间没有胆量去人从众的景点,关在家里刷手机时意外在亚马逊的User Group公众号上发现了CodeWhisperer这么个好东西(bu yao qian),以后撸代码也可以提高生产力(fang yang mo yu)了,这还不赶紧上手试一下。看官方介绍说它支持流行的IDE开发工具,包括VS Code、Intelli

    2024年02月08日
    浏览(54)
  • 1024程序员节带你玩转图片Exif信息获取之JavaScript

    目录 一、前言 二、背景 三、Exif.js          1、Exif.js 简介 2、Exif.js 引入 四、多场景展示数据获取 1、原始图片直接获取  2、base64 编码文件加载  3、文件上传的方式加载  五、总结        1024是2的十次方,二进制计数的基本计量单位之一。1G=1024M,而1G与1级谐音,也有一

    2024年02月20日
    浏览(60)
  • UE虚幻引擎教程_生成云平台指定路径下的exe文件

    市面上大量优秀的游戏都是基于UE制作的,UE虚幻引擎制作的作品可以在windows、mac、linux以及ps4、x-boxone、ios、android甚至是html5等平台上运行。本文介绍了UE虚幻引擎如何生成云平台指定路径下的EXE。 一、云平台会运行打包文件夹下指定路径的EXE文件 但有时候UE蓝图项目比较简

    2024年02月16日
    浏览(37)
  • UE5 虚幻引擎中UI、HUD和UMG的区别与联系

    🙋‍♂️ 作者:海码007 📜 专栏:UE虚幻引擎专栏 💥 标题:UE5 虚幻引擎中UI、HUD和UMG的区别与联系 ❣️ 寄语:加油,一次专注一件事! 🎈 最后: 文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。 💥在学习虚幻引擎

    2024年01月20日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包