首页 > 其他分享 >UE4学习笔记27——【UI】3DUI的交互和显示

UE4学习笔记27——【UI】3DUI的交互和显示

时间:2022-12-26 19:55:15浏览次数:44  
标签:控件 27 蓝图 3DUI 全自动 添加 UI 组件 节点

  • P69. 3DUI的交互和显示
  • P69

 (新建一个包含第一人称射击模板的项目)

新建一个文件夹(用于存放自己新建的文件)(我重命名为了“WJJ1221P69”),在此文件夹中,右键 “用户界面——控件蓝图”,重命名为“全自动_UMG”;

打开此控件蓝图,拖拽一个“按钮”到“画布画板”的下级,锚点居中,大小和位置适当调整;然后再拖拽一个“文本”到“按钮”的下级,文本内容改成“半自动”,字体大小适当调整;

之后相同的操作(或者复制刚才的),适当调整,文本内容改成“全自动”;

(可以给两个文本添加个描边(“外观——字体——轮廓设置——轮廓大小”))

  

(3DUI通常要以actor的身份存在于世界当中)

 在自己的文件夹中,右键“蓝图类——Actor”,重命名为“3Dwidget_test1”,然后打开它;

左上 组件 面板,“添加组件——控件组件”,单击这个新添加的“控件组件”,细节 面板,“用户界面——控件类”选择“全自动_UMG”(我们新建的控件蓝图),“用户界面——绘制大小”的X和Y分别改成1280和720(因为“全自动_UMG”的大小是1280×720);

切换到“全自动_UMG”控件蓝图,从控制板 面板,从“通用”拖一个“边界”到“画布画板”的下级,与两个按钮同级但是在两个按钮之上(不然会覆盖掉两个按钮):

  

把此“边界”全屏(锚点选右下角那个,偏移量全改为0),颜色改成偏灰色的,透明度改成0.8:

  

完成后编译;

切换到“3Dwidget_test1”蓝图类,单击组件 面板中的“widget”,细节 面板,“渲染——混合模式”改成“透明”,编译后回到关卡编辑 界面,拖一个“3Dwidget_test1”到场景中看一下:

  

(如果拖进去没有显示 一片空白(透明),可能是角度反了,从另一侧观察一下或者把这个蓝图类旋转180度看一下(我一开始就是这个问题))

回到“3Dwidget_test1”,单击widget,细节面板,“变换——缩放”的XYZ全部改成0.2(缩小UI,之前的太大了);再把“用户界面——绘制大小”的XY改成1920和1080(这样看起来比较“美观”);

打开“FirstPersonCharacter”蓝图类,组件 面板,在“FP_Gun”下添加组件“控件交互组件”,单击这个组件,视图中红色箭头就是它,然后把他旋转到和枪的朝向一致,拉出来一点,调整高度,放到枪口的位置上:

      

 

细节 面板,“调试——显示调试”打勾;

打开“FirstPersonCharacter”的事件图表,从组件 面板拖一个刚才添加的“控件交互组件”,从此节点添加节点“按下指针键”,“Key”选“鼠标左键”,节点“输入操作Fire”的“pressed”连接“按下指针键”的前端执行,从节点“输入操作Fire”的“released”添加节点“松开指针键”,“key”同样改成“鼠标左键”;

(和3DUI互动,不发射子弹;没有和3DUI互动,发射子弹)

从节点“按下指针键”添加节点“分支”,从节点“按下指针键”前的“widget interaction”添加节点“在可聚焦控件上方”,此节点的“return value”连接“分支”的“condition”,“分支”的“false”连接后面的“蒙太奇播放”(原来是“输入操作fire”连接的);

(下面做全自动和半自动)

添加节点“添加自定义事件”,重命名为“是否全自动”;添加一个bool型变量,重命名为“是否能够全自动”,把此变量拖拽到节点“是否全自动”的执行端,然后把新节点的“是否能够全自动”前面的红圈连接到节点“是否全自动”(节点“是否全自动”还没有对应的点,拖拽过去自动就有了):

  

(上面的目的是:通过调用自定义事件来设置这个bool值)

在上面的蓝图,节点“按下指针键”后面的节点“分支”之后,再添加节点“分支”,拖拽一个变量“是否能够全自动”到节点“分支”(新添加的)的“condition”上,前面的节点的“false”连接此分支节点,此分支节点的“false”,连接“蒙太奇播放”(如果不是全自动,就正常的和刚才一样);

添加节点“自定义事件”,重命名为“全自动射击”,此节点的执行连接“蒙太奇播放”的前端执行;添加节点“以函数名设置定时器”,第二个“分支”的“true”连接此节点的前端执行,“function name”改成“全自动射击”(自定义事件),“time”改成0.1(延迟0.1s触发自定义事件)(间隔时间越短射速越快),“looping”打勾(没延迟0.1s就触发这个自定义事件(射击));

从节点“松开指针键”添加节点“以函数名清除定时器”,“function name”填“全自动射击”;

切换到“全自动_UMG”控件蓝图,从细节面板添加两个按钮的“点击时”节点;打开“全自动_UMG”的图表,从节点“事件构造”(如果没有则添加)添加节点“获取类的所有actor”,“actor class”选“FirstPersonCharacter”,从“out actors”添加节点“get(复制)”,右键“get”节点右侧的蓝色小圈,“提升为变量”(变量名字重命名为“player”),然后会多出一个节点,此多出节点的前端执行连接“获取类的所有actor”的后端执行;

 

拖拽一个变量player的“获取player”到代表“半自动按钮”的节点旁,从“player”添加节点“是否全自动”,“半自动按钮”后端执行连接“是否全自动”;对于“全自动按钮”,给予同样的两个节点和连线方式,不同的是节点“是否全自动”的引脚“是否能够全自动”打勾;

到此已经可以实现半自动射击和全自动射击(鼠标按下一直开枪,松开停下);

整理一下各个部分的事件图表等:

  FirstPersonCharacter蓝图类 事件图表:

    

 全自动_UMG事件图表:

  

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

标签:控件,27,蓝图,3DUI,全自动,添加,UI,组件,节点
From: https://www.cnblogs.com/wjjgame/p/16996628.html

相关文章

  • elementui|dropdown|下拉菜单作为模态框使用
    elementui|dropdown|下拉菜单作为模态框使用背景场景:下拉菜单作为模态框使用:操作:下拉菜单设置触发条件点击展示/隐藏:trigger="click"目的:点击取消关闭下拉框遇到的......
  • 抓包工具 -- burpsuite(Repeater功能)
    一、安装java环境二、下载burpsuite三、运行后的界面四、我们点击Proxy模块,查看Options信息,记住这个代理地址和端口五、打开浏览器(360),设置代理六、返回burpsuite软件,......
  • Selenium27-断言方法
    unittest框架里常用的断言方法:都在TestCase类里定义......
  • FineUI通过js事件条用后台方法实现弹窗
    一、html标签的onclick事件<buttontype="button"class="btnUpdate"onclick="<%#GetEditUrl(Eval("DetailId"))%>">纠正</button>二、后台弹窗方法publicstrin......
  • 最强备注插件:quick note。
     我就直接把常用的代码往这里一放,用的时候我复制出来一搜,就找到对应的位置了。完美。根本不需要这个插件记录代码位置我感觉quicknote比codereadingnote好 ......
  • 老男孩教育 | 27岁转行做运维,收获月薪14K Offer,用实力证明自己!
    不得不说,赚钱对于普通人来说真的是一件很难的事情,因为我们习惯了上班,习惯了每天的两点一线,习惯了每月领取那点微薄的收入。尤其是在X情时代,很多人不敢做出改变,选择了安于现......
  • SoC build system
    目标静态化设计参数/命令行参数模块化IP批处理能力(regression)文件/目录结构定义&描述配置文件中定义约定目录结构配置文件结构模块IP间依赖解析flow之......
  • 如何使用 YonBuilder 进行报表分析?
    报表是基于业务元数据、业务模型、数据模型等数据来源展示与分析业务的重要工具,在YonBuilder中可以通过简单拖拽、选择,快速生成报表分析,提升报表开发效率。本期通过员工信息......
  • YonBuilder应用构建教程之移动端基础配置
    在YonBuilder中除了PC端应用的构建外,我们还可以构建配套的移动端页面。对于同一个数据实体可以实现PC端和移动端的数据同步修改,使数据录入、修改、审批等更加便捷。本篇文章......
  • 只有一个程序员开发和运营,BuiltWith网站年入1400万美元是怎么做到的?
    国外有一位程序员叫GaryBrewer,他一人撑起了一个公司,这个公司还年入1400万美元,约人民币1亿元。对此,你是啥想法?先别着急说不可能,这事儿确实是真的:这名程序员名为Gar......