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

devtools/2024/11/25 12:01:49/

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秒中后关闭


http://www.ppmy.cn/devtools/136832.html

相关文章

记连接不上虚拟机IP

修改子网配置 问题:虚拟机可以到达主机,而主机可以ping通虚拟机ip 注意:同步修改静态IP配置,否则连接不上!!!!

寻找丑数.

丑数(Ugly Number)是指只包含质因数2、3和5的正整数。寻找第n个丑数. 解读题目,第n个丑数一定是由前n-1个数中的某三个丑数分别乘以2,3,5所得到的小数. 定义函数如下: 函数is_ugly(num):用于判断一个数是否是丑数,它接受一个整数num作为参数如果num小于…

【漏洞复现】广州锦铭泰软件 F22服装管理软件系统 Load.ashx 任意文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…

高性能服务器模型之Reactor(单线程版本)

一、概念 Reactor模型是一种事件驱动的设计模式,用于处理并发I/O操作。其核心思想是将I/O事件的监听和实际的I/O操作分离开来,由事件循环(Event Loop)负责监听I/O事件,当事件发生时,将事件分发给相应的事件…

第21周:机器学习

目录 摘要 Abstract 一、ARIMA模型 1、时间序列模型 (1)时间序列的分析方法 (2)时间序列的预处理 (3)ARIMA模型的引入 2、AR模型 3、MA模型 4、小结 二、K-means聚类算法 三、实验 1、数据处…

一加ACE 3 Pro手机无法连接电脑传输文件问题

先说结论:OnePlus手机无法连接电脑传输数据的原因,大概率是一加数据线的问题。尝试其他手机品牌的数据线(比如华为),再次尝试。 连接电脑方法: 1 打开开发者模式(非必要操作) 进入…

Axios案例练习

使用原生的Ajax请求还是比较繁琐,所以说一般使用Axios,Axios是对于Ajax的封装,主要是为了简化书写。 Axios使用比较简单,主要分为两步: 1.在script标签的src中引入Axios文件 特别注意,这里是需要一对单独的…

详细描述一下Elasticsearch搜索的过程?

大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch搜索的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch搜索的过程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Elasticsearch 是一个基于 Apache Lucene 构建的…