24. UE5 RPG制作属性面板(二)

news/2024/5/14 5:51:56

在上一篇中,我们创建属性面板的大部分样式,这一篇里面接着制作。
在这一篇里我们需要有以下几个方面:

  1. 在界面增加一个属性按钮。
  2. 属性按钮增加事件,点击时可以打开属性面板,属性面板打开时无法再次点击按钮。
  3. 点击属性面板的关闭按钮可以关闭属性面板,关闭属性面板后,属性按钮可以再次打开属性面板。

接下来,我们将一步步实现上面的功能。

创建属性按钮

在上一篇中,我们创建了一个按钮模版widget,它可以被直接使用,也可以被继承使用。接下来,我们将使用它创建一个加宽版本的按钮。
右键创建一个控件蓝图,父类使用WBP_Button命名为WBP_WideButton
在这里插入图片描述
选中左侧的节点
在这里插入图片描述
右侧会出现我们公开的属性
在这里插入图片描述
我们将它们修改掉。加宽的按钮不需要边框,我们将其清除掉,并修改四种状态下使用的图片
在这里插入图片描述
修改完成后效果如下
在这里插入图片描述
修改完成将其添加到WBP_Overlay上面
在这里插入图片描述
编译运行,我们测试它的三种状态,因为没有触发第四种,记得直接修改按钮上的文字,在界面上显示的时候,显示Attributes
在这里插入图片描述

添加属性按钮的点击事件

之前没讲过,现在讲一下WIdget图标里面的几个事件
在这里插入图片描述
Event Pre Construct 相当于是构造函数,可以在编辑时触发
Event Construct 在构造后绑定事件使用,构造包含内部的节点
Event Tick 相当于帧回调事件

首先修改一下按钮的命名,我们将其修改为AttributeMenuButton
在这里插入图片描述
将其设置为一个变量
在这里插入图片描述
我们可以在事件图标中通过变量获取到widget内部的button节点
在这里插入图片描述
在button上面我们可以绑定多个button的回调,有On Clicked点击事件,On Hovered悬停事件,On Pressed按下时就触发的事件,On Released 鼠标抬起时, On Unhovered 鼠标未悬停到
在这里插入图片描述
我们使用点击事件触发,当按钮被点击时,就会触发绑定的事件
在这里插入图片描述
我们将事件绑定和逻辑分开,所以再单独创建一个自定义事件
在这里插入图片描述
然后在触发事件回调时,让其调用自定义事件
在这里插入图片描述
在点击事件中,我们首先将按钮设置关闭状态,它将显示无法启用的ui,然后我们再打印一个问题,看看会不会多次被调用
在这里插入图片描述
测试证明,设置关闭状态后,点击事件无法再次触发
在这里插入图片描述
接着在事件后面接着创建一个属性面板,添加到视口
在这里插入图片描述
运行会发现属性面板铺满的全屏
在这里插入图片描述
我们打开WBP_AttributeMenu,在使用覆层包裹住尺寸框节点,填充修改为填充屏幕,会显示出当前所在的位置
在这里插入图片描述
修改一下SizeBox_Root的填充
在这里插入图片描述
然后编译打开,就显示正常了
在这里插入图片描述
或者,我们使用Set Position in Viewport也可以实现
在这里插入图片描述

添加关闭属性面板功能

打开WBP_AttributeMenu,给关闭按钮修改一个名称,设置为变量
在这里插入图片描述
绑定点击事件,这里直接将ui从父节点移除
在这里插入图片描述
我们实现了关闭属性框,但是还有一个问题,就是无法开启视口的按钮再次打开属性框。接下来我们要实现这个功能。
这个功能我们可以在WBP_AttributeMenu里面获取到开启按钮,然后设置,但是这种耦合度太高,不利于后续的维护,所以我们使用事件分发器进行设置。
我们在WBP_AttribueMenu里面添加一个事件分发器,它相当于蓝图版本的事件委托。
在这里插入图片描述
在属性框被销毁时调用一下委托,我们在别的Widget里面就可以监听此节点。
在这里插入图片描述
回到WBP_Overlay,在创建WBP_AttribueMenu后面监听事件分发器,在事件回调里面将按钮激活
在这里插入图片描述
至此,完成了属性面板的开关。


http://www.mrgr.cn/p/84264880

相关文章

iOS —— 初识KVO

iOS —— 初始KVO KVO的基础1. KVO概念2. KVO使用步骤注册KVO监听实现KVO监听销毁KVO监听 3. KVO基本用法4. KVO传值禁止KVO的方法 注意事项: KVO的基础 1. KVO概念 KVO是一种开发模式,它的全称是Key-Value Observing (观察者模式) 是苹果Fundation框架…

2-21. 实现背包检查和添加物品

修改 InventoryManager 检查背包是否有空位通过物品 ID 找到背包已有物品位置在指定背包序号位置添加物品添加物品到 Player 背包里项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240329_0720

【论文阅读】UniLog: Automatic Logging via LLM and In-Context Learning

注 由于其公司的保密政策,本文没有公开源代码,数据是公开的。 文章目录 摘要一、介绍二、背景和动机2.1、日志语句生成2.2、大语言模型2.3、上下文学习(In-Context Learning,ICL) 三、UNILOG3.1、模型骨干3.2、提示策略3.2.1、提…

【快速解决】解决谷歌自动更新的问题,禁止谷歌自动更新,如何防止chrome自动升级 chrome浏览器禁止自动升级设置方法

目录 问题描述 解决方法 1、搜索栏搜索控制面板 2、搜索:服务 ​编辑 3、点击Windows工具 4、点击服务 ​5、禁止谷歌更新 问题描述 由于我现在需要装一个谷歌的驱动系统,但是目前的谷歌驱动系统的版本都太旧了,谷歌自身的版本又太新了…

[转帖]FIO测试存储性能iodepth队列深度对iops的影响

FIO是用来测试磁盘IO性能比较常用的工具,它的强大之处在于提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。此次我们来测试金山私有云KingStack某套环境下SSD磁盘的4KB…

Unity | 工具类-UV滚动

一、内置渲染管线Shader Shader"Custom/ImageRoll" {Properties {_MainTex ("Main Tex", 2D) "white" {}_Width ("Width", float) 0.5_Distance ("Distance", float) 0}SubShader {Tags {"Queue""Trans…

docker 部署 gitlab-ce 16.9.1

文章目录 [toc]拉取 gitlab-ce 镜像创建 gitlab-ce 持久化目录启停脚本配置配置 gitlab-ce编辑 gitlab-ce 配置文件重启 gitlab-ce配置 root 密码 设置中文 gitlab/gitlab-ce(需要科学上网) 拉取 gitlab-ce 镜像 docker pull gitlab/gitlab-ce:16.9.1-ce.0查看镜像是不是有 Vo…

uniapp 微信小程序 canvas 手写板获取书写内容区域并输出

uni.canvasGetImageData 返回一个数组,用来描述 canvas 区域隐含的像素数据,在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 组件。 // 获取目标 canvas 的像素信息 pixelData let canvas uni.createSelector…

RabbitMQ 实验消费原始队列消息, 拒绝(reject)投递死信交换机过程

如果你想通过 RabbitMQ 的死信队列功能实现消费者拒绝消息投递到死信交换机的行为,你可以按照以下步骤操作: 创建原始队列,并将其绑定到一个交换机上: export RABBITMQ_SERVER127.0.0.1 export RABBITMQ_PORT5672 export RAB…

ubuntu使用-ubuntu23.10中创建arm架构的银河麒麟操作系统v10

ubuntu使用-ubuntu23.10中创建arm架构的银河麒麟操作系统v10ubuntuqemu银河麒麟arm安装qemu之后,从应用中或者使用virt-manager命令打开虚拟系统管理器。 创建虚拟机,架构选择aarch64,机器类型不知道选什么,暂选的是virt,后面有问题的话再说。参考国产银河麒麟操作系统下…

Radio Silence for mac 好用的防火墙软件

Radio Silence for Mac是一款功能强大的网络防火墙软件,专为Mac用户设计,旨在保护用户的隐私和网络安全。它具备实时网络监视和控制功能,可以精确显示每个网络连接的状态,让用户轻松掌握网络活动情况。 软件下载:Radio…

VSCode 如何同步显示网页在手机或者平板上

首先要确保 ①电脑上安装了VsCode ②VsCode安装插件LiveServer 安装成功之后 连续按住 Alt L 、Alt O 会跳转到对应的html页面上 http://127.0.0.1:5500/....... 是这个开头的 然后打开网络 如果桌面有网上邻居的可以直接点桌面的网上邻居 进来找到WLAN这个…

llama-index 结合chatglm3-6B 利用RAG 基于文档智能问答

简介 llamaindex结合chatglm3使用 import os import torch from llama_index.core import VectorStoreIndex, ServiceContext from llama_index.core.callbacks import CallbackManager from llama_index.core.llms.callbacks import llm_completion_callback from llama_ind…

2-19. 拾取物品基本逻辑

创建 ItemPickup 脚本项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240329_0638

Win10 搭建FTP存储服务器站点【超详细教程】

目录 第一步:打开控制面板>程序 第二步:win10左下角搜索IIS并打开 第三步:右键网站,选择添加FTP站点 第四步:添加FTP站点名称 第五步:添加IP地址和端口 第六步:身份验证与授权信息 第…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记20_读后总结与感想兼导读

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记20_读后总结与感想兼导读1. 基本信息 1.1. 读薄率 书籍总字数350千字,笔记总字数32629字。 读薄率32629350000≈9.32% 1.2. 读厚方向千脑智能脑机穿越未来呼啸而来虚拟人AI3.0新机器人人工不智能:计算机如何误解世界天才与算法…

UE小:基于UE5的两种Billboard material(始终朝向相机材质)

本文档展示了两种不同的效果,分别是物体完全朝向相机和物体仅Z轴朝向相机。通过下面的演示和相关代码,您可以更加直观地理解这两种效果的差异和应用场景。 1. 完全朝向相机效果 此效果下,物体将完全面向相机,不论相机在哪个角度…

蓝桥杯_day6

文章目录 不同路径不同路径II拿金币珠宝的最高价值 不同路径 【题目描述】 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为…

2024/3/26 C++作业

定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度:int…

RISC-V特权架构 - 中断定义

RISC-V特权架构 - 中断定义 1 中断类型1.1 外部中断1.2 计时器中断1.3 软件中断1.4 调试中断 2 中断屏蔽3 中断等待4 中断优先级与仲裁5 中断嵌套6 异常相关寄存器 本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 中断类型 RISC-V 架构定义的中…