GAS GameplayEffect

UGameplayEffect相关:

1.UGameplayEffect

        作为效果的基类, 可以继承从而开发自己的效果类

2.FGameplayEffectSpec

        首先F开头(多用于结构体), 不继承自UObject因此不会进行垃圾回收;

        作用:聚合UGamplayEffect类对象, 然后附加运行时的一些数据和Context上下文。 例如Level , FGameplayEffectContextHandle

3.FGameplayEffectSpecHandle

        2中的Spec是无法进行垃圾回收的,因此要想办法,既不需要调用者关心对象的生存周期(无需手动Delete对象),又可以正常的进行垃圾回收。因此做了一个Tricky:使用ShaderPtr来做引用计数, 这样我们调用MakeGameplayEffect最终会返回一个Handle() , 而C++中除非标记&引用类型进行传递,否则全部使用值传递(将会产生临时对象); 这就会产生一系列的临时变量:随着作用域的变化生生死死, 但是最终将会MakeShared(UGameplayEffect)这个可以自动回收的变量

        捋一下最终的引用链

                FGameplayEffectSpecHandle-----通过Shared_ptr -------->引用New出来的FGameplayEffectSpec(New出来的作为持久化的存在,除非手动Delete,而上面使用Share_ptr Tricky)----

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值