当前位置: 首页 > news >正文

06 GE Modifier

看看这个

问题。怪!究竟下一个modifier能不能访问到上一个?刚才还可以啊现在怎么不行了。
这里捕获了Owner的属性,Source不知道在哪捕获的


CalculationType:
1.使用计算后的值
2.使用基础值
3.使用计算后的值-基础值。

BackingAttributes

Source指Instigator,按道理应该在MakeOutGoingContext的时候就有了。
不知道为什么InstigatorASC = null
因为InstigatorASC是从OwnerActor中获取ASC。
PlayerState而不是Controller
初始化成功😀

总结:Source指GEContext中的InstigatorAbilitySystemComponent,在使用ASC->MakeOutGoingContext()时,已经指定了此ASC为OwnerActor身上的ASC。在我这个情况下,ASC存在于PlayerState上,所以Source因该是PlayerState上的ASC,应该将OwnerActor设置为PlayerState而不是Controller。
_______________________________________额外问题————————————————

Modifier列表中,上一条结果到底能不能被下一条访问?

Health = 2,Health*=4,Health = 8
Health = 2,Mana = 2,Health+=Mana,Health = 2
Health = 2,Health +=Health,Health = 2

猜想:使用BackingAttribute时,取的是Apply前的值。不使用时,取得是Modifier中的值。


那这个SnapShot又是什么意思。。。。看看源码。
 

这里逐一计算Modifier的值。
这里对四种Modifier进行了Switch,第一种最简单,直接返回查曲线查到的值。

AttributeBased类型的Modifier的值的计算函数,在上面的情况中返回的是0。接下来看看为什么是0

使用AttributeMagnitude类型的计算,进入这个函数
用到一个叫做Aggregator(聚合器)的东西进行计算

使用BaseValue,这个此时还是0.

 总结:Modifier的值是先计算每一项的值,再根据计算结果修改Base值。所以上一项的值不能被下一项拿到。要想让Health = MaxHealth将他们分成两个GE,一个修改MaxHealth,一个修改Health.


http://www.mrgr.cn/news/99149.html

相关文章:

  • 使用注解方式整合ssm时,启动tomcat扫描不到resource下面的xxxmapper.xml问题,解决方法
  • dawgctf 2025 writeup
  • 从零起步的Kaggle竞赛 - BirdCLEF2025
  • Python多任务编程:进程全面详解与实战指南
  • 实现AWS Lambda函数安全地请求企业内部API返回数据
  • 【C++详解】C++入门(一)命名空间、缺省参数、函数重载
  • Linux安装mysql_exporter
  • 第 28 场 蓝桥月赛
  • 线性DP:最长上升子序列(子序列可不连续,子数组必须连续)
  • C++ 模块化编程(Modules)在大规模系统中的实践难点
  • acwing--动态规划【线性dp】4/20、4/21
  • 大数据应用开发——大数据平台集群部署(四)
  • 机器学习专栏(4):从数据饥荒到模型失控,破解AI训练的七大生死劫
  • 分布类相关的可视化图像
  • 基于maven-jar-plugin打造一款自动识别主类的maven打包插件
  • 单元测试的一般步骤
  • 20. git diff
  • 超简单的git学习教程
  • Spring Boot 项目中发布流式接口支持实时数据向客户端推送
  • 硬件电路(24)-NE555振荡电路