Debug正常了
-
ARPGCharaterBase:启动编辑器前会先构造蓝图中实现的类,从basecharaterBP到playcontrolleerBP,goblin,spider等等,中间会有重复初始化的情况,后面 仔细看一下。
-
ARPGPlayerControllerBase::BeginPlay:点击启动后调用,该函数调用LoadInventory,加载库存
-
ARPGCharaterBase:在播放过场动画的过程中会再次调用该函数,
PlayerCharater_C_0(再次·debug时没有经过这里) -
PossessedBy:这是重载自ACharater的函数,这里会尝试设定初始的InventorySource背包来源,并初始化句柄(句柄在RPGTtypes里定义),初始化ASC的Actor为当前对象,添加初始技能。(似乎一般的Actor都在这里初始化。),执行AddStartupGameplayAbilities
-
ARPGCharacterBase::AddStartupGameplayAbilities:添加初始技能,这里的初始技能表GameplayAbilities是空的。PassiveGameplayEffects中有一个元素StartupStates,则赋予该ASC这个GE,具体过程是:新建一个EffectContext,并指定其源是当前ASC,因为该GE是自己作用给自己的,创建该GE的handle,等级为Charater等级,上下文为刚刚创建的Context(一个指向Effect的指针),最后调用ASC的函数将Handle赋给当前ASC,调用AddSlottedGameplayAbilities,这里我发现Handle是用于程序里传递各种类型数据的,就相当于一个指针!
-
URPGAttributeSet::PreAttributeChange:直接调用URPGAttributeSet::AdjustAttributeForMaxChange
-
URPGAttributeSet::AdjustAttributeForMaxChange:获取修改值的Max和普通的CurrentValue,用公式(C*C/CM)-C
-
URPGAttributeSet::Po