50. UE5 RPG FGameplayEffectContext

接下来,我想实现处理完伤害时,将伤害的触发格挡或者触发暴击时的逻辑传递到数据集的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.hqwc.cn/news/707498.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光伏电站设备数据采集

随着全球对可再生能源的关注度日益提升&#xff0c;光伏电站作为绿色能源的重要组成部分&#xff0c;其运营效率和稳定性显得尤为重要。在光伏电站的日常管理中&#xff0c;设备数据采集是一项至关重要的工作&#xff0c;它直接关系到电站的运行状态、故障预警以及能源产出的优…

连绕下线和掏把下线

这里的连绕下线和掏把下线讲的是线不剪断的接法&#xff01; 这里还是以一路串联为例子&#xff0c;一相4组线圈 &#xff0c;4组线圈就需要3根套管&#xff0c;3相就需要9根套管 如下图 绕这一相4组线圈的时候&#xff0c;就已经放好一定大小的3根套管&#xff01; 这个只试…

一文搞懂车载系统开发学习路线

前言 随着汽车技术的快速发展和智能化趋势的加强&#xff0c;车载信息娱乐系统已经成为现代汽车不可或缺的一部分。因此&#xff0c;车载软件市场正在迅速增长&#xff0c;这为Android应用开发提供了新的机会。恰好近年来大环境不是很理想&#xff0c;车载开发不失为Android应…

山东济南起名大师颜廷利:历经磨难蜕变的动物,与越挫越勇的动物有哪些?

山东济南最出名的起名大师颜廷利教授谈历经磨难蜕变的动物&#xff0c;与越挫越勇的动物有哪些&#xff1f; 在自然界的舞台上&#xff0c;无数动物演绎着生存的传奇。它们不畏艰难&#xff0c;逆流而上&#xff0c;将生命的蜕变和重生绘制成一幅幅震撼心灵的画卷。以下是那些历…

虚拟机安装山石网科防火墙

0、前言 由于工作原因&#xff0c;需要在虚拟机中测试防火墙。以前个人测试、学习过程中用过pfSense、OPNsense、ClearOS&#xff0c;但是开源的不太能满足我当前的一个需求。我想要测试SOAR自动编排与防火墙联动。所以尝试在虚拟环境中虚拟商业版防火墙。华为的eNSP模拟器可以…

玩法非常野,却能在抖音赚到钱,真的让人大跌眼镜!

很多人都说现在赚钱太难了。 每天996只能挣三瓜两枣&#xff0c;养活自己还行&#xff0c;如果是有了家庭&#xff0c;生活真的很拮据。 所以现在很多年轻人都喜欢利用下班时间&#xff0c;在网上做副业&#xff0c;或者找一些适合个人&#xff0c;夫妻做轻资产创业小项目。 …

Python代码:九、十六进制数字的大小

1、题目 计算的世界&#xff0c;除了二进制与十进制&#xff0c;使用最多的就是十六进制了&#xff0c;现在使用input读入一个十六进制的数字&#xff0c;输出它的十进制数字是多少&#xff1f; 2、代码 import sysnum16 input() num10 int(num16,16) print(num10) 3、结…

D60SB60-ASEMI电源设备首选整流桥D60SB60

编辑&#xff1a;ll D60SB60-ASEMI电源设备首选整流桥D60SB60 型号&#xff1a;D60SB60 品牌&#xff1a;ASEMI 封装&#xff1a;DSB-4 最大重复峰值反向电压&#xff1a;600V 最大正向平均整流电流(Vdss)&#xff1a;60A 功率(Pd)&#xff1a;大功率 芯片个数&#xf…

【physx/wasm】在physx中添加自定义接口并重新编译wasm

目录 说在前面环境搭建编译自定义接口 说在前面 操作系统&#xff1a;windows11wsl2physx版本&#xff1a;5.3.1参考&#xff1a;physx-js-webidl (physx版本为该作者fork出的某个版本) 环境搭建 这里使用的是wsl2docker进行编译的&#xff0c;搭建步骤参考&#xff1a;WSL2 上…

【Python BUG】一文解决Jupter Notebook虚拟环境切换失败问题

问题描述 在conda中创建了单独的pachong环境&#xff0c;并且在Pycharm等编辑器中完全可以进行使用、开发。但在Notebook中使用自带的切换按钮也没用&#xff0c;同时&#xff0c;在网上搜索了一些方法也没有解决。 解决方案 &#xff08;前提是我已经有了需要的添加的虚拟环…

基于springboot实现名城小区物业管理系统项目【项目源码+论文说明】

基于springboot实现名城小区物业管理系统演示 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于物业信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&…

如何给实拍添加旋转模糊效果?视频模糊特效PR模板剪辑素材

PR特效模板&#xff0c;高级旋转模糊效果视频模板剪辑素材。 特征&#xff1a; After Effects 2019及以上兼容项目。 Premiere Pro 2021及以上兼容项目。 可用分辨率&#xff08;4K–HD–方形–移动&#xff09;。 不需要插件。 包括教程。 免费下载&#xff1a;https://prmu…