当前位置: 首页 > 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.

相关文章:

  • 【AI论文】对人工智能生成文本的稳健和细粒度检测
  • 性价比超高的 英伟达Tesla T4卡 如何解决散热问题?
  • Ubuntu 22.04 更换 Nvidia 显卡后启动无法进入桌面问题的解决
  • OpenAPI 3.0学习笔记
  • 【Redis】了解Redis
  • Java Web项目(一)
  • Java29:Spring MVC
  • 积木报表查询出现jdbc.SQLServerException: 对象名 ‘user_tab_comment 的解决方法
  • Federated Weakly Supervised Video Anomaly Detection with Multimodal Prompt
  • SpringBoot集成Kafka详解
  • 【锂电池SOH估计】SVM支持向量机锂电池健康状态估计,锂电池SOH估计(Matlab完整源码和数据)
  • 零点、驻点、拐点、极值点、最值点的定义、几何意义、求解方法
  • 2025年4月19日-得物算法岗春招笔试题-第二题
  • 项目预期管理:超越甘特图,实现客户价值交付
  • The_Planets_Earth靶场笔记(VulnHub)
  • 996引擎-拓展变量:物品变量
  • python:循环语句 while循环,for遍历循环,break,continue,else,嵌套循环(打印矩形、三角形,九九乘法表)
  • AI与思维模型【68】——排列组合
  • ASP.NET 0~1学习
  • 物联网技术赋能:复杂环境下的能源数据零丢失
  • 都市文化·商业演剧·海派艺术:早期上海话剧商演发展新探索
  • 中越海警开展2025年第一次北部湾联合巡逻
  • 18条举措!上海国际金融中心进一步提升跨境金融服务便利化
  • 商务部:支持外籍医生开设诊所,优化罕见病药品进口抽检模式
  • 用8年还原曹操墓鉴定过程,探寻曹操墓新书创作分享会举行
  • 华夏幸福:累计未能如期偿还债务金额合计为227.91亿元