虚幻引擎Gameplay探索 Actor 之间的高效通信与交互技巧二

news2024/11/15 12:41:44

Actor通信介绍

在虚幻引擎中,Actor 是游戏世界中的基本构建块,类似于 Unity 中的 GameObject。Actor 通信是指不同 Actor 之间如何相互交互和传递信息,这在构建复杂的游戏逻辑时至关重要。以下是对 Actor 通信的详细介绍。

Actor通信方法表:

通信方法使用场景前提条件示例
直接通信需要调用关卡中某一Actor的方法需要引用关卡中的Actor在关卡中的特定Actor上触发事件。
类型转换希望验证Actor是否属于特定类,以便访问其属性。需要引用关卡中的Actor以类型转换到所需的Actor类。访问属于同一父类的子Actor的特定功能。
事件分发器通过一个Actor来触发到多个Actor的事件。其他Actor需要订阅事件,以便对事件作出响应。通知不同类型的Actor:某事件已经触发。
接口当你需要为不同Actor添加相同功能时。需要引用关卡中的Actor,并且该Actor需要实现接口。为不同类型的Actor添加交互行为。

Gameplay框架Actor通信文章首发

通信方法演示

准备工作

打开虚幻引擎–创建新项目–选择游戏–第三人称游戏–勾选初学者内容包。

image.png
本Demo使用最新虚幻引擎版本5.4构建。

事件分发器通信

类似于Unity中的委托事件,全局或局部公开的一个事件分发器,由需要的脚步自由订阅,只要订阅了该事件分发器,当事件触发时,这些订阅者就能收到消息,处理各自的逻辑。

  1. 编写一个持有事件分发器的Actor
    在内容菜单新建一个Actor类型的蓝图类–命令为BP_EeventActor–添加一个Box组件–并在我的蓝图中事件分发器一栏添加+号–添加事件分发器并命名为OnBoxEvent–在事件图表中添加On Component Begin Overlay事件–将事件分发器拖拽到图表中选择调用,连接图如下:
    image.png
    编译保存,并将其放进场景中任意位置
    image.png
  2. 创建第一个事件接收器Actor–BP_CircularReceive
    编写蓝图逻辑,将四个QuarterCylinder隐藏。
    添加一个变量命名为EventActor在细节面板设置变量类型为BP_EevntActor,并设置为公开变量–添加一个变量命名为CylinderList,在细节面板设置变量类型为Static Mesh Actor(数组类型),并设置为公开。–在EvenActor变量细节面板事件栏下添加On Box Event右边的+号,开始编写逻辑:
    image.png
    将BP_CircularReceive拖放到场景中,在细节面板分别赋值变量的引用:
    image.png
  3. 编写第二个事件接收器Actor–BP_ExplosionActor
    在内容菜单里搜索Blueprint_Effect_Explosion,将其复制到自己定义的文件夹中并命名为BP_ExplosionActor–将其拖到场景中圆柱的位置,稍微调整一下位置让在圆柱中间。同上一步一样添加变量Eventor,将其事件完善,这里是启用爆炸效果。
    image.png
    还需要将两个子组件P_Explosion和ExplosionAudio的激活属性Auto Activate取消勾选。最后将其放置场景中并设置变量引用:
    image.png
  4. 测试事件分发器效果
    在这里插入图片描述

接口通信

UE5中,Actor 接口通信是一种非常有效的设计模式,接口负责定义一系列共有的行为或功能,这些行为或功能在不同Actor中可以有不同的实现方法。当你为不同Actor实现了相同类型的功能时,适合使用此通信方法。

本例中,将实现一个简单的交互系统,通过在两个不同Actor间通信,学习接口的用法。

  1. 创建接口
    右键目录空白处创建蓝图接口类
    image.png
    双击打开添加函数命名为Interaction
    在这里插入图片描述

  2. 创建可交互开关的灯
    在内容菜单搜索Blueprint_CeilingLight将其复制到自定义的目录,并重命名为BP_Light–将其放置到场景中。
    双击打开蓝图点击类设置添加接口BPI_Interaction,编译保存后再我的蓝图接口栏下右击Interaction接口选择实现事件可以看到Event Interaction节点自动添加到蓝图中。
    image.png
    编写交替开关灯的逻辑:
    image.png

  3. 创建可交互的球体
    新建一个Actor蓝图类命名为BP_Sphere,添加一个球体组件,同第2步一样添加接口Interaction并实现切换材质的逻辑:
    image.png

  4. 修改玩家蓝图并测试接口事件
    找到蓝图BP_ThirdPersonCharacter,在其OnComponent Begin Overlap事件中添加执行节点Interaction(Message)。
    在这里插入图片描述

编译保存并运行:
在这里插入图片描述

总结

  1. 事件分发器

    • 适合需要广播事件的场景,能够让多个 Actor 响应同一事件,增强了系统的灵活性和扩展性。
  2. 接口

    • 提供了一种灵活的方式为不同类型的 Actor 添加共同的功能。通过接口实现,可以减少代码重复,提高可维护性。

事件分发器和接口都是实现 Actor 之间高效通信的重要工具。事件分发器适用于需要动态广播的场景,而接口则确保了不同 Actor 之间功能的一致性和可重用性。结合这两种方法,开发者可以构建出更具互动性和可扩展性的游戏系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis复习笔记整理(没有人会有耐心看完包括我自己)

目录 1、Redis简介 1.1 补充数据类型Stream 1.2 Redis底层数据结构 1.3 Redis为什么快 1.4 持久化机制* 1.4.1 RDB持久化 bgsave执行流程 如何保证数据一致性 快照操作期间服务崩溃 RDB优缺点 1.4.2 AOF持久化 为什么采用写后日志 如何实现AOF 什么是AOF重写 AO…

Vue组件:动态组件、缓存组件、异步组件

1、动态组件 Vue.js 提供了对动态组件的支持。在使用动态组件时&#xff0c;多个组件使用同一挂载点&#xff0c;根据条件在不同组件之间进行动态切换。动态组件通过使用 Vue.js 中的 <component>元素&#xff0c;动态绑定到该元素的 is 属性&#xff0c;根据 is 属性的…

通过LDAP方式使用windows域认证

关于Windows的域认证, 网上大多都再介绍原理啥的, 但是对于从来没有做过.net的我来说, 和看天书一样. 我把我做的demo提供出来共大家参考. 需要参考的文章,参照如下 Windows下LDAP服务安装与使用_windows ldap-CSDN博客 OpenLDAP管理工具之LDAP Admin-腾讯云开发者社区-腾讯云…

计算机基础知识-3

机器周期的时钟周期&#xff0c;或者是cpu时钟周期&#xff0c;就是系统的主频&#xff0c;&#xff0c;根据主频的频率产生脉冲信号。一条指令的执行分为取指和执行&#xff0c;不同指令的取指和执行锁需要的时间也可能是不同的。 每个指令的机器周期可能不同&#xff0c;每个…

Centos镜像详细下载思路总结:包括阿里云镜像下载和官方地址下载--centos7和centos8 镜像下载

Centos镜像详细下载思路总结&#xff1a;包括阿里云镜像下载和官方地址下载。 系统镜像下载&#xff1a; 阿里云镜像&#xff1a; centos-vault安装包下载_开源镜像站-阿里云 官方网址&#xff1a; https://vault.centos.org/7.6.1810/isos/ 系统相关依赖包下载&#xff1a…

某里228滑块逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解…

【Web】XGCTF 西瓜杯 超详细题解

目录 CodeInject tpdoor easy_polluted Ezzz_php CodeInject eval里打代码注入 11);system("tac /0*");// tpdoor 可以传参isCache给../../config/route.php写入$config[request_cache_key] 打的是CheckRequestCache中间件解析的漏洞 think\middleware\Ch…

智能客服 | AI助理与内部知识库如何优化用户体验

在数字化转型的浪潮中&#xff0c;客户服务作为企业与客户之间的关键触点&#xff0c;其重要性不言而喻。随着人工智能技术的日益成熟&#xff0c;AI助理与企业知识库的深度融合正在重新定义客户服务的边界&#xff0c;为用户带来前所未有的便捷与个性化体验。 一、AI助理&…

5款翻译工具,告别百度在线翻译!

作为一个经常需要处理多语言文件的小编&#xff0c;我深知翻译工具的重要性。今天&#xff0c;我就来和大家聊聊几款市面上比较热门的翻译工具&#xff0c;一起来看看这几款翻译软件怎么样吧。 1、福昕在线翻译 网址&#xff1a;https://fanyi.pdf365.cn/doc 我发现它的界面简…

OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 拟合一条直线到2D或3D点集。 fitLine 函数通过最小化 ∑ i ρ ( r i ) \sum_i \rho(r_i) ∑i​ρ(ri​)来拟合一条直线到2D或3D点集&#xff0c…

什么是过压保护?常见的过压保护元器件有哪些?

在现代电子设备的设计和制造过程中&#xff0c;过压保护是至关重要的一个环节。过电压可能会导致电路板上的元器件损坏或系统故障&#xff0c;因此使用合适的#过压保护元器件#至关重要。 1. 什么是过压保护&#xff1f; 过压保护是一种电子和电气系统中的安全措施&#xff0c…

搭建Eureka高可用集群 - day03

全部代码发出来了 搭建服务提供者 步骤&#xff1a; 1.创建项目&#xff0c;引入依赖 2.添加Eureka相关配置 3.添加EnableEurekaClient注解 4.测试运行 步骤1&#xff1a;创建项目&#xff0c;引入依赖 使用Spring Initializr方式创建一个名称为eureka-provider的Sprin…

Git 撤销commit

上一篇&#xff0c;Git撤销add&#xff0c;其实已经讲了用reset命令可以取消commit&#xff0c;这里再啰嗦下。先看&#xff1a; git如何撤回已经commit • Worktile社区 首先明确一点&#xff0c;无论是commit还是撤销commit&#xff0c;都是在本地暂存区操作&#xff0c;而…

HTML5中IndexedDB前端本地数据库

一、indexedDB为何替代了Web SQL Database&#xff1f; 跟小朋友的教育从来没有什么“赢在起跑线”这种说法一样&#xff0c;在前端领域&#xff0c;也不是哪来先出来哪个就在日后引领风骚的。 HTML5 indexedDB和Web SQL Database都是本地数据库数据存储&#xff0c;Web SQL Da…

陶建辉演讲干货分享,AI 时代下的数据预测和数据处理挑战

在 7 月 26 日的 TDengine 用户大会上&#xff0c;涛思数据&#xff08;TDengine&#xff09;创始人&CEO 陶建辉进行了题为《TDengine 助你决胜 AI 时代》的主题演讲。他不仅分享了 TDengine 的全面技术创新&#xff0c;还深入阐释了打造 TDengine AI 大语言模型插件 TDgpt…

浙大数据结构:02-线性结构3 Reversing Linked List

数据结构MOOC PTA习题 这道题也是相当费事&#xff0c;不过比上一个题好一些&#xff0c;这里我使用了C的STL库&#xff0c;使得代码量大幅减少。 题干机翻&#xff1a; 1、条件准备 这里我准备采用map来存地址和值&#xff0c;因为map的查找效率也是不错的 数组arr是存链…

新手入门Python:魔法函数详解与应用

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 什么是魔法函数?📝 基础魔法函数📝 运算符重载📝 高级魔法函数📝 综合应用示例⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程的世界里,有一类特别的函数,它们看似普通,却拥有神奇的力量。这些函…

Word文档的读入【2】

现在&#xff0c;乔老师已经了解了Word文档的基本结构。 下面&#xff0c;我们通过观察一份答题卡来思考一下每条信息的具体位置。这样&#xff0c;在后面几天的学习和操作中&#xff0c;我们就能更快、更准确地读取到答题卡中的信息。 这份答题卡是由一个表格和一些段落组成。…

使用API有效率地管理Dynadot域名,查看某一订单当前的状态

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

完美解决下载安装pytorch cuda版本超级慢的问题

问题描述 最近使用pytorch官网安装pytorch cuda版本的命令安装&#xff0c;使用的是官方的镜像源&#xff0c;速度非常慢&#xff0c;通常只有200KB/s&#xff1b;记得以前安装的时候速度可以达到10M/s&#xff0c;不知道最近是不是对国内限速了。 尝试更换成国内镜像源&…