当前位置: 首页 > news >正文

28.UE5游戏框架,事件分发器,蓝图接口

3-3 虚幻游戏框架拆解,游戏规则基础_哔哩哔哩_bilibili

目录

1.游戏架构

2.事件分发器

2.1UI控件中的事件分发器

2.2Actor蓝图中的事件分发器

 2.2.1动态决定Actor的分发事件

2.2.2父类中定义事件分发器,子类实现事件分发器

2.3组件蓝图中实现事件分发器

3.蓝图接口


1.游戏架构

大概记住流程就行了,理解最重要

2.事件分发器

理解事件分发器,需要从两个角度出发:

        1.事件分发器的(声明者)调用者(声明事件分发器,并决定调用事件的时机,但不负责事件内部逻辑)

        2.事件分发器的实现者(不决定什么时候调用事件,只负责实现事件逻辑)

事件分发器的声明者和调用者通常是一个对象,且和事件分发器的实现者往往是分离的,因为如果一个蓝图即是(声明者)调用者又实现者,那么事件分发器往往不如直接声明、实现、调用一个函数直接。

事件分发器主要有三种使用场景::

1.UI控件中:

        让自己设计的UI控件能够实现一些功能:点击功能,值变更功能等等。

                (声明者)调用者:UI控件负责调用时机

                实现者:使用UI控件的人,负责事件的具体实现逻辑

2.Actor蓝图中:

        2.1在程序运行时,动态的给Actor分发事件(Actor定义时负责调用时机,运行时负责事件实现)

        2.2父类中定义事件分发器,子类实现事件分发器

3.组件蓝图中:

        组件负责定义事件的调用时机,使用组件的负责实现具体的事件逻辑

2.1UI控件中的事件分发器

设计通用按钮,并让通用按钮拥有点击事件,案例可参考20.UE5UI预构造,开始菜单,事件分发器_ue5 菜单-CSDN博客

2.2Actor蓝图中的事件分发器

 2.2.1动态决定Actor的分发事件

        案例:

                例如现在有一款养宠物的游戏,有两个难度,普通,困难。

                当难度时普通时,饥饿值为0后,5秒之后宠物死亡。

                当难度为困难时,饥饿值为0后,宠物直接死亡。

首先创建蓝图Actor,命名为我的宠物,添加饥饿值变量,并在事件开始时声明一个每5秒扣除5点饥饿值的定时器事件,当生命值归零后调用事件分发器中的,当饥饿小于0的事件。我的宠物作为事件分发器的声名者和调用者。

本来应该在游戏实例中添加游戏难度,并且绑定不同难度的当饥饿小于0时的实现逻辑。但是为了方便演示,就在我的玩家控制器中进行演示了。

按1为普通难度,当饥饿小于0时,就延迟5秒死亡

按2,就是困难难度,当饥饿小于0的时候,直接死亡

2.2.2父类中定义事件分发器,子类实现事件分发器

        还有一种情况就是在父类中定义事件分发器,子类中实现事件分发器

        案例:我的宠物中有一个子蓝图,为骆驼,当饥饿值归零时,可以无视游戏难度,依旧坚持5秒钟死亡

创建我的宠物子蓝图,并命名为:骆驼

骆驼这个宠物,在开始事件中,分配当饥饿小于0的事件

回到我的控制器蓝图,按3创建骆驼,这个时候无论游戏难度是多少,骆驼都能坚持5秒死亡。

这个案例主要是理解,在游戏运行中动态分配事件,以及子类分配父类的事件(类似重载)。

2.3组件蓝图中实现事件分发器

创建我的组件蓝图

为组件添加事件分发器

那么所有添加了我的组件的蓝图,都可以实现我的组件事件蓝图。

3.蓝图接口

接口就好像电脑上的USB接口一样, 接口只管定义尺寸和规格(参数输入),所有手机厂商,U盘厂商,鼠标键盘厂商都需要按照这个尺寸和规格设计接口才能接入到电脑上,但是具体的实现功能不同,比如说手机的USB线可以传输数据和充电,U盘可以快速读写,鼠标键盘可以通过USB和电脑进行交互等等。

接口只管定义规格,具体接口的实现方式交给蓝图Actor进行实现。

案例:

        实现一个功能,按数字键盘1,让场上所有的灯光打开。

创建蓝图接口

在接口中添加一个函数,函数有一个输入,浮点类型的开灯几秒

创建灯光

创建Actor蓝图,命名为我的灯,添加点光源组件,并设置强度和颜色

 将点光源的默认可视设置为关闭

 在我的灯蓝图中,打开类设置,添加接口,我的接口

 设置灯的可视性,并延迟,打开灯几秒后,进行可视性的关闭

 接下来实现,按1打开灯

打开我的控制器蓝图

获取场景中所有实现了:我的接口的Actor,并遍历出所有的Actor,并调用打开灯的接口,开灯事件可以设置为5秒。

将我的灯拖入场景中,运行游戏,按数字键1,灯光打开,并在5秒中后关闭

相关文章:

28.UE5游戏框架,事件分发器,蓝图接口

3-3 虚幻游戏框架拆解,游戏规则基础_哔哩哔哩_bilibili 目录 1.游戏架构 2.事件分发器 2.1UI控件中的事件分发器 2.2Actor蓝图中的事件分发器 2.2.1动态决定Actor的分发事件 2.2.2父类中定义事件分发器,子类实现事件分发器 2.3组件蓝图中实现事件…...

Puppeteer 和 Cheerio 在 Node.js 中的应用

Puppeteer 和 Cheerio 在 Node.js 中的应用 引言 在现代 Web 开发中,自动化测试、数据抓取和页面分析是常见的需求。Node.js 提供了丰富的工具和库来满足这些需求。本文将介绍两个在 Node.js 中常用的库:Puppeteer 和 Cheerio,它们分别用于…...

Unity2D 关于N方向俯视角 中 角色移动朝向的问题

通常对俯视角2d游戏的角色移动我们使用简单2d混合树的方式,但是其不移动时的朝向该如何定义? 十分简单:移动和不移动之间形成逻辑自锁 详细说明思路就是再创建一个简单2d混合树 定义其N方向的idle 并用lastDirc二维向量保存玩家输入,当玩家输…...

pytorch 和tensorflow loss.item()` 只能用于只有一个元素的张量. 防止显存爆炸

loss.item() 是 PyTorch 中的一个方法,它用于从一个只包含单个元素的张量(tensor)中提取出该元素的值,并将其转换为一个 Python 标量(即 int 或 float 类型)。这个方法在训练神经网络时经常用到&#xff0c…...

链表刷题|判断回文结构

题目来自于牛客网,本文章仅记录学习过程的做题理解,便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边,先得有大概的解决方案,最后如果时间或者空间超了再去优化即可。 思路一:要判断是否为回文结构则…...

海盗王集成网关和商城服务端功能golang版

之前用golang把海盗王的商城服务端和网关服务端都重写了一次。 后来在同时开启网关和商城服务时,发现窗口数量有点多,有时要找到商城窗口比较麻烦。 既然2个都是用golang govcl写的,是不是可以集成到一起,方便使用呢?…...

SCI 中科院分区中位于4区,JCR分区位于Q2 是什么水平?

环境: ACM Transactions on Interactive Intelligent Systems 《Acm Transactions On Interactive Intelligent Systems》(《交互式智能系统上的 Acm 事务》)是一本由ASSOC COMPUTING MACHINERY (ACM)出版的Computer Interaction-Computer Science-Human学术刊物&…...

微知-Mellanox网卡的另外一种升级方式mlxup?(mlxup -d xxx -i xxx.bin)

背景 一般升级Mellanox网卡使用flint,还有另外一种叫做mlxup。 NVIDIA 提供了两种固件工具来更新和查询适配器固件: MLXUP - 固件更新和查询实用程序。该实用程序允许扫描服务器计算机以查找可用的 NVIDIA 适配器,并指示每个适配器是否需要…...

《Shader入门精要》透明效果

代码以及实例图可以看github :zaizai77/Shader-Learn: 实现一些书里讲到的shader 在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)​。当开启透明混合后,当一个物体被渲染到屏幕上时&…...

Linux之SELinux与防火墙

一、SELinux的说明 开发背景与目的: SELinux由美国国家安全局(NSA)开发,旨在避免资源的误用。传统的Linux基于自主访问控制(DAC),通过判断进程所有者/用户组与文件权限来控制访问,对…...

深度学习使用LSTM实现时间序列预测

大家好,LSTM是一种特殊的循环神经网络(RNN)架构,它被设计用来解决传统RNN在处理长序列数据时的梯度消失和梯度爆炸问题,特别是在时间序列预测、自然语言处理和语音识别等领域中表现出色。LSTM的核心在于其独特的门控机…...

Vue第一篇:组件模板总结

前言 本文希望读者有一定的Vue开发经验&#xff0c;样例采用vue中的单文件组件&#xff0c;也是我的个人笔记&#xff0c;欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件&#xff0c;<template></template>被称为模板&#xff0c;模板中必须有一个根元素…...

时钟使能、

时钟使能 如果正确使用&#xff0c;时钟使能能够显著地降低系统功耗&#xff0c;同时对面积或性能的影响极小。但是如果不正确地使用时钟使能&#xff0c; 可能会造成下列后果&#xff1a; • 面积增大 • 密度减小 • 功耗上升 • 性能下降 在许多使用大量控制集的…...

1. Autogen官网教程 (Introduction to AutoGen)

why autogen The whole is greater than the sum of its parts.(整体的功能或价值往往超过单独部分简单相加的总和。) -Aristotle autogen 例子 1. 导入必要的库 首先&#xff0c;导入os库和autogen库中的ConversableAgent类。 import os from autogen import Conversable…...

开源账目和账单

开源竞争&#xff1a; 开源竞争&#xff08;当你无法彻底掌握技术的时候&#xff0c;你就开源这个技术&#xff0c;让更多的人了解这个技术&#xff0c;形成更多的技术依赖&#xff0c;你会说这不就是在砸罐子吗&#xff1f;一个行业里面总会有人砸罐子&#xff0c;你不如先砸…...

vue2面试题10|[2024-11-24]

问题1&#xff1a;vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上&#xff0c;你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...

c语言与c++到底有什么区别?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于c语言与c区别的相关内容&#xff01; 关…...

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证&#xff0c;回顾从IA到IE的学习和项目实战&#xff0c;想整合和分享自己的学习历程&#xff0c;欢迎志同道合的朋友们一起讨论&#xff01; 第二章&#xff1a;服务器基础 服务器是什么&#xff1f; 服务器本质上就是个性能超强的…...

优先算法 —— 双指针系列 - 复写零

目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作&#xff1a;从左到右&#xff08;错误&#xff09; 从右到左 总结一下解决方法&#xff1a; 如何找到最后一个复写的数 特殊情况 完整步骤&#xff1a; 3. 代码 1. 复写零 题目链接&#xff1a;1089. 复写零 - 力…...

初识Linux—— 基本指令(下)

前言&#xff1a; 本篇继续来学习Linux的基础指令&#xff0c;继续加油&#xff01;&#xff01;&#xff01; 本篇文章对于图片即内容详解&#xff0c;已同步到本人gitee&#xff1a;Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat ​ cat 查看文件…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...