8.10学习记录,UE4官方GASdemo,ARPG

这篇博客详细记录了在UE4中开发ARPG游戏时,角色控制、技能激活、属性修改的过程。从ARPGCharacterBase的构造开始,深入到BeginPlay、AddStartupGameplayAbilities等关键函数,探讨了如何加载库存、初始化技能和属性调整。通过跟踪技能应用,解释了如何执行GameplayEffects,包括属性变更、冷却时间计算等核心逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Debug正常了

  1. ARPGCharaterBase:启动编辑器前会先构造蓝图中实现的类,从basecharaterBP到playcontrolleerBP,goblin,spider等等,中间会有重复初始化的情况,后面 仔细看一下。

  2. ARPGPlayerControllerBase::BeginPlay:点击启动后调用,该函数调用LoadInventory,加载库存

  3. ARPGCharaterBase:在播放过场动画的过程中会再次调用该函数,
    PlayerCharater_C_0(再次·debug时没有经过这里)

  4. PossessedBy:这是重载自ACharater的函数,这里会尝试设定初始的InventorySource背包来源,并初始化句柄(句柄在RPGTtypes里定义),初始化ASC的Actor为当前对象,添加初始技能。(似乎一般的Actor都在这里初始化。),执行AddStartupGameplayAbilities

  5. ARPGCharacterBase::AddStartupGameplayAbilities:添加初始技能,这里的初始技能表GameplayAbilities是空的。PassiveGameplayEffects中有一个元素StartupStates,则赋予该ASC这个GE,具体过程是:新建一个EffectContext,并指定其源是当前ASC,因为该GE是自己作用给自己的,创建该GE的handle,等级为Charater等级,上下文为刚刚创建的Context(一个指向Effect的指针),最后调用ASC的函数将Handle赋给当前ASC,调用AddSlottedGameplayAbilities,这里我发现Handle是用于程序里传递各种类型数据的,就相当于一个指针!

  6. URPGAttributeSet::PreAttributeChange:直接调用URPGAttributeSet::AdjustAttributeForMaxChange

  7. URPGAttributeSet::AdjustAttributeForMaxChange:获取修改值的Max和普通的CurrentValue,用公式(C*C/CM)-C

  8. URPGAttributeSet::Po

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值