50. UE5 RPG FGameplayEffectContext

news2024/12/25 13:20:50

接下来,我想实现处理完伤害时,将伤害的触发格挡或者触发暴击时的逻辑传递到数据集的PostGameplayEffectExecute里面,这样,在处理IncomingDamage时,我们可以通过释放触发格挡或者触发暴击在UI上面进行对应的效果表现。

当前GE的获取逻辑

在PostGameplayEffectExecute里面,我们是通过自定义了一个结构体,从Data里面处理并获取了对应的数据。
在这里插入图片描述
Data数据的结构体里面共有三项,
EffectSpec就是当前使用处理的GE的实例
EvaluatedData 是一个结构体,里面包含了应用到目标修改的属性和修改量。我们也是通过这个判断修改的哪个属性
Target 是一个技能组件ASC,它的值是应用的目标ASC
在这里插入图片描述
在处理时,我们是从Data上面获取到GE的上下文句柄,然后获取的源的数据,而目标数据是从Target获取。
在这里插入图片描述
那么,这个GE的上下文句柄是在什么时候创建的,我们打开生成投掷物的技能类,发现这个上下文是在创建GE的实例时生成的,然后将GE实例创建出来,设置给投掷物身上,用于碰撞触发时应用给目标的ASC
在这里插入图片描述

FGameplayEffectContextHandle

查看MakeEffectContext方法,首先创建FGameplayEffectContextHandle实例,然后设置了源的ASC的所有对象和控制对象
在这里插入图片描述
在往下深究之前,我们先打个断点,看一下GE上下文句柄内包含了哪些数据
现在可以看到有些数据是设置的,有些没有设置,设置的哪些数据就是在MakeEffectContext时设置的。
Data其实就是EffectContext,在创建的时候创建的实际上下文。
在这里插入图片描述
比如Instigator和EffectCauser的属性,是在MakeEffectContext时设置的,分别为OwnerActor(PlayerState)和AvatarActor(BP_Aura)
在这里插入图片描述
并且技能发起者的ASC也是在设置Actor时候缓存下来的
在这里插入图片描述
在设置了发动者的参数时,也对应的设置的它们会被复制
在这里插入图片描述
这里设置也是在AddInstigator里面实现的
在这里插入图片描述
对于一些没有赋值的内容,主要是GAS没有主动给我们设置,需要我们手动设置
在这里插入图片描述
我们没有设置,在构造时,它也会给我们设置一个默认值
在这里插入图片描述
我们还可以看到FGameplayEffectContext类里面给我们设置对应的添加技能和SourceObject等的函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

填充FGameplayEffectContext

查看了源码,我们发现还有很多配置没有填充上,所以,我们先实现将内置这些配置项填充上。
在ProjectileSpell.cpp中,我们在创建GE时,需要创建GE的上下文句柄我们直接抽离出来创建一个变量,方便调用内置函数设置

FGameplayEffectContextHandle EffectContextHandle = SourceASC->MakeEffectContext();

然后调用一系列的函数尽可能的设置内置的属性

EffectContextHandle.SetAbility(this); //设置技能
EffectContextHandle.AddSourceObject(Projectile); //设置GE的源
//添加Actor列表
TArray<TWeakObjectPtr<AActor>> Actors;
Actors.Add(Projectile);
EffectContextHandle.AddActors(Actors);
//添加命中结果
FHitResult HitResult;
HitResult.Location = ProjectileTargetLocation;
EffectContextHandle.AddHitResult(HitResult);
//添加技能触发位置
EffectContextHandle.AddOrigin(ProjectileTargetLocation);

接着编译打开UE,打开断点查看数值是否都被设置上。
在这里插入图片描述

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

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

相关文章

Ubuntu环境搭建与共享文件

vmtool 然后依次执行以下指令 sudo apt-get update 更新包列表。访问系统的软件仓库源,检查所有已知软件包的最新版本,并更新本地数据库,使得可以安装或升级到最新的软件版本。sudo apt-get upgrade 升级所有已安装的软件包到它们的最新版本。这不包括新安装的软件包,仅限…

24/05/14总结

签到2&#xff1a; 签到界面上有时间显示&#xff0c;签到码输入框&#xff0c;开始签到&#xff0c;当倒计时结束&#xff0c;老师端和学生端都会显示签到结果&#xff0c;所以签到结果需要建表&#xff1a;&#xff08;签到了的学生和未签到的学生&#xff0c; 这次签到的时间…

【iOS】工厂模式

文章目录 前言设计模式的三大原则简单工厂模式工厂方法模式抽象工厂模式关于三兄弟的升级与降级注意 前言 上文讲完了iOS的架构模式&#xff0c;接下来聊一聊设计模式&#xff0c;设计模式有许多&#xff0c;主要介绍一下工厂模式 设计模式的三大原则 S 单一职责原则 告诉我…

adobe安装“Error:SyntaxError:JSON Parse error:Unexpec

mac电脑安装Adobe时&#xff0c;会提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”&#xff0c;这是怎么回事儿的&#xff0c;不管您是安装AI、PS、PR还是LR&#xff0c;如果也遇到相同的问题&#xff0c;可以参考一下方法解决&#xff1a; 「adobe安装提示错误…

LLM应用-prompt提示:让大模型总结生成思维导图

第一步&#xff1a;大模型生成markdown思维导图格式 例如&#xff1a;kimi 总结pdf文档案例&#xff1a; 生成的markdown格式&#xff1a; # 知识图谱的构建及应用 ## 一、知识图谱的构建 ### 1. 数据采集 - 来源&#xff1a;结构化数据库、半结构化网页、非结构化文本 - 预处…

三星将采用铁电材料实现1000层3D NAND

在2022年的技术日上&#xff0c;三星公布了一项宏伟目标&#xff0c;即到2030年推出层数超过1000层的先进NAND芯片。据Wccftech报道&#xff0c;这家韩国存储巨头似乎正逐步接近这一目标&#xff0c;计划在NAND芯片制造中应用新型“铁电”材料。 最近美国火奴鲁鲁举行的VLSI技术…

Mujoco仿真【将urdf文件转化为xml文件】

最近开始学习mujoco仿真方面的内容 先前写过一篇博客&#xff1a;强化学习&#xff1a;MuJoCo机器人强化学习仿真入门&#xff08;1&#xff09;_mujoco仿真-CSDN博客 简单介绍了mujoco仿真的一些内容&#xff0c;下面想在Mujoco中将urdf转为xml文件&#xff0c;了解到mujoco是…

pikachu靶场通关之csrf漏洞通关教程

目录 CSRF&#xff08;get型&#xff09; 1.打开网站&#xff0c;点击右上角提示 2.登录之后&#xff0c;点击修改个人信息 3.修改上述内容&#xff0c;打开抓包工具 4.抓到修改用户信息的数据包 5.构造虚假url&#xff0c;诱导用户点击 6.弹到修改后的界面 ​编辑 7.返…

windows11 Django环境安装

相关文档 1、验证python和pip3环境 C:\Users\Administrator>python Python 3.12.3 (tags/v3.12.3:f6650f9, Apr 9 2024, 14:05:25) [MSC v.1938 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for…

数据库学习之select语句练习

目录 素材 练习 1、显示所有职工的基本信息。 结果 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 结果 3、求出所有职工的人数。 结果 4、列出最高工和最低工资。 结果 5、列出职工的平均工资和总工资。 结果 6、创建一个只有职…

【LeetCode刷题】136.只出现一次的数字(Ⅰ)

【LeetCode刷题】136.只出现一次的数字&#xff08;Ⅰ&#xff09; 1. 题目&#xff1a;2.思路分析&#xff1a;思路1&#xff1a;一眼异或&#xff01; 1. 题目&#xff1a; 2.思路分析&#xff1a; 思路1&#xff1a;一眼异或&#xff01; 看到题目&#xff0c;如果有一定基…

助力数字农林业发展服务香榧智慧种植,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建香榧种植场景下香榧果实检测识别系统

作为一个生在北方但在南方居住多年的人&#xff0c;居然头一次听过香榧&#xff08;fei&#xff09;这种作物&#xff0c;而且这个字还不会念&#xff0c;查了以后才知道读音&#xff08;fei&#xff09;&#xff0c;三声&#xff0c;这着实引起了我的好奇心&#xff0c;我相信…

在macOS中开发的Django项目部署到局域网的Win10服务器上

由于windows10是日常办公电脑&#xff0c;没有服务器基本环境&#xff0c;部署工程耗费不少时间&#xff0c;记录一下。 1、安装Python 访问Python官方下载页面&#xff1a;Python Downloads&#xff0c;下载适用于Windows的安装程序并按照提示进行安装。开发环境python版本是…

主从Reactor服务器

目录&#xff1a; 目录&#xff1a; 目标&#xff1a; 本文讲解思路&#xff1a; 各模块的功能以及代码&#xff1a; 1.服务器相关模块&#xff1a;服务器模块的功能是对所有的连接以及线程进⾏管理 2.协议相关模块&#xff1a;协议模块是对当前的Reactor模型服务器提供应…

GPT-4o:全面深入了解 OpenAI 的 GPT-4o

GPT-4o&#xff1a;全面深入了解 OpenAI 的 GPT-4o 关于 GPT-4o 的所有信息ChatGPT 增强的用户体验改进的多语言和音频功能GPT-4o 优于 Whisper-v3M3Exam 基准测试中的表现 GPT-4o 的起源追踪语言模型的演变GPT 谱系&#xff1a;人工智能语言的开拓者多模式飞跃&#xff1a;超越…

FSMC的NOR Flash/PSRAM 控制器功能介绍(STM32F4)

目录 概述 1 FSMC支持的类型 1.1 信号类型概述 1.2 FSMC的应用 2 外部存储器接口信号 2.1 I/O NOR Flash 2.2 PSRAM/SRAM 3 支持的存储器和事务 4 通用时序规则 5 NOR Flash/PSRAM 控制器异步事务 5.1 模式 1 - SRAM/PSRAM (CRAM) 5.2 模式 A - SRAM/PSRAM (CRAM…

电机控制杂谈——“双采样双更新模式”对模型预测控制/PI控制的提升有多大?

1.采样频率与PWM开关频率的关系 一般有以下两种采样模式。 如下图&#xff08;a&#xff09;所示&#xff0c;这种方式称之为单采单更模式&#xff0c;即在一个PWM周期内&#xff0c;采样一次&#xff0c;更新一次PWM占空比&#xff0c;在这种情况下&#xff0c;采样频率&…

独立服务器和云服务器哪个好?

在当今数字时代&#xff0c;网站托管是任何在线业务成功的关键要素之一。但是&#xff0c;当谈到选择正确的托管解决方案时&#xff0c;很容易陷入独立服务器与云服务器之间的抉择。两者都有各自的优势和限制&#xff0c;因此在决定哪种类型的托管适合您的业务之前&#xff0c;…

JavaScript异步编程——09-Promise类的方法【万字长文,感谢支持】

Promise 类的方法简介 Promise 的 API 分为两种&#xff1a; Promise 实例的方法&#xff08;也称为&#xff1a;Promis的实例方法&#xff09; Promise 类的方法&#xff08;也称为&#xff1a;Promise的静态方法&#xff09; 前面几篇文章&#xff0c;讲的都是 Promise 实…

基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 扩散映射&#xff08;Diffusion Maps&#xff09; 4.2 卡尔曼滤波 4.3 基于梯度流的扩散映射卡尔曼滤波&#xff08;GFDMKF&#xff09; 5.完整程序 1.程序功能描述 基于梯度流的扩散…