ARPGCharacterBase():
1.AbilitySystemComponent->CreateDefaultSubobject、设置Replicated
2.AttributeSet->CreateDefaultSubobject
protected: void AddStartupGameplayAbilities():
1.check(AbilitySystemComponent)
2.判断在服务器上&&技能未初始化bAbilitiesInitialized=false
3.将TArray<TSubclassOf<UGameplayAbility>> GameplayAbilities所有技能(GA)都GiveAbility
4.将TArray<TSubclassOf<UGameplayEffect>> PassiveGameplayEffects所有被动技能效果(GE)都生成出来
根据FGameplayEffectContextHandle生成GESpecHandle(用MakeOutgoingSpec),然后Apply到角色上
5.将背包里和技能栏里已有技能GiveAbility(在LoadSaveGame的时候会比较有用,因为会保存上一次游戏已获取技能)
6.设置技能已经初始化bAbilitiesInitialized=true
protected:void RemoveStartupGameplayAbilities():
1.check(AbilitySystemComponent)
2.判断在服务器上&&技能已经初始化bAbilitiesInitialized
3.从ASC上GetActivatableAbilitie