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 类型)。这个方法在训练神经网络时经常用到,…...
链表刷题|判断回文结构
题目来自于牛客网,本文章仅记录学习过程的做题理解,便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边,先得有大概的解决方案,最后如果时间或者空间超了再去优化即可。 思路一:要判断是否为回文结构则…...
海盗王集成网关和商城服务端功能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开发经验,样例采用vue中的单文件组件,也是我的个人笔记,欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件,<template></template>被称为模板,模板中必须有一个根元素…...
时钟使能、
时钟使能 如果正确使用,时钟使能能够显著地降低系统功耗,同时对面积或性能的影响极小。但是如果不正确地使用时钟使能, 可能会造成下列后果: • 面积增大 • 密度减小 • 功耗上升 • 性能下降 在许多使用大量控制集的…...
1. Autogen官网教程 (Introduction to AutoGen)
why autogen The whole is greater than the sum of its parts.(整体的功能或价值往往超过单独部分简单相加的总和。) -Aristotle autogen 例子 1. 导入必要的库 首先,导入os库和autogen库中的ConversableAgent类。 import os from autogen import Conversable…...
开源账目和账单
开源竞争: 开源竞争(当你无法彻底掌握技术的时候,你就开源这个技术,让更多的人了解这个技术,形成更多的技术依赖,你会说这不就是在砸罐子吗?一个行业里面总会有人砸罐子,你不如先砸…...
vue2面试题10|[2024-11-24]
问题1:vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上,你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...
c语言与c++到底有什么区别?
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于c语言与c区别的相关内容! 关…...
云计算-华为HCIA-学习笔记
笔者今年7月底考取了华为云计算方向的HCIE认证,回顾从IA到IE的学习和项目实战,想整合和分享自己的学习历程,欢迎志同道合的朋友们一起讨论! 第二章:服务器基础 服务器是什么? 服务器本质上就是个性能超强的…...
优先算法 —— 双指针系列 - 复写零
目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作:从左到右(错误) 从右到左 总结一下解决方法: 如何找到最后一个复写的数 特殊情况 完整步骤: 3. 代码 1. 复写零 题目链接:1089. 复写零 - 力…...
初识Linux—— 基本指令(下)
前言: 本篇继续来学习Linux的基础指令,继续加油!!! 本篇文章对于图片即内容详解,已同步到本人gitee:Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat cat 查看文件…...
DeTikZify:AI驱动的科研图表代码自动化解决方案
DeTikZify:AI驱动的科研图表代码自动化解决方案 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 一、科研绘图的隐形痛点:我…...
GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试
GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试 1. 为什么需要远程调试 在AI模型开发过程中,我们经常遇到一个典型问题:本地机器性能不足,无法高效运行大型语言模型。GLM-4.1V-9B-Base这类模型通常需要GPU加…...
饭局下半场,别人忙着解酒,我从开局就赢在酒杯里
1. 饭局如战场,后半场才是真正的考验任何一场饭局,都可以被分成两个阶段。前半场,推杯换盏,人人意气风发。酒过三巡,大家还在比拼谁喝得多、谁喝得猛,气氛热烈而体面。但到了后半场,画风开始分裂…...
Android Studio中文界面汉化终极指南:5分钟打造舒适开发环境
Android Studio中文界面汉化终极指南:5分钟打造舒适开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为An…...
PyTorch 2.8镜像高算力适配:10核CPU调度策略优化,避免I/O瓶颈拖慢训练
PyTorch 2.8镜像高算力适配:10核CPU调度策略优化,避免I/O瓶颈拖慢训练 1. 镜像核心优势与硬件适配 PyTorch 2.8深度学习镜像经过深度优化,专为高性能计算场景设计。这个环境最显著的特点是完美适配了10核CPU与RTX 4090D显卡的协同工作&…...
从GCC-PHAT到深度学习:一种融合特征与神经网络的声源定位实践
1. 声源定位技术的前世今生 第一次接触声源定位是在2016年的一个智能音箱项目上,当时团队需要实现"唤醒词定向响应"功能。我们尝试了各种传统算法,最终在GCC-PHAT和SRP-PHAT之间反复调试的场景至今记忆犹新。这种让机器"听声辨位"的…...
3步掌握B站视频下载:解锁大会员4K高清内容
3步掌握B站视频下载:解锁大会员4K高清内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader Bilibili-downloader是你获取B站…...
Vivado 时序约束文件 (.xdc) 管理与维护实战指南:从单文件到团队协作
Vivado 时序约束文件 (.xdc) 管理与维护实战指南:从单文件到团队协作 在FPGA设计流程中,时序约束文件(.xdc)如同交通信号灯,为设计指明方向与规则。随着项目规模扩大和团队协作需求增加,如何高效管理这些约…...
基于PostGIS与SpringBoot构建高性能动态MVT矢量瓦片服务
1. 为什么需要动态矢量瓦片服务 第一次接触矢量瓦片是在2018年做智慧城市项目时,当时前端同事抱怨加载行政区划数据太慢。一个省级行政区划的GeoJSON文件大小超过10MB,每次打开网页都要等半天。后来尝试了Mapbox的矢量瓦片方案,加载速度直接提…...
YimMenu:GTA V安全防护与体验增强工具完全指南
YimMenu:GTA V安全防护与体验增强工具完全指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...
