欢迎大家加入Unreal Engine C++ & Blueprint群一起交流:1143575617
将技能装备到技能栏听上去比较简单,但是沿续之前的思路,技能显示的Material Instance是封装到了FGameplayAbilityInfo类中的。
所以本节还是稍微有点复杂。
为了一次性能够初始化多个技能,我们新建一个方法。以下是在CPP中的实现。
void AShinbi::AquireAbilities(TArray<TSubclassOf<UGameplayAbility>> Abilitylist)
{
for (TSubclassOf<UGameplayAbility> singleAbility : Abilitylist) {
AquireAbility(singleAbility);
if (singleAbility->IsChildOf(UMyGameplayAbility::StaticClass())) {
UMyGameplayAbility *AbilityAddToUI = singleAbility->GetDefaultObject<UMyGameplayAbility>();
AddAbilitytoUI(AbilityAddToUI);
}
}
}
AddToUI方法是通过蓝图实现的,并不在代码中实现。通过UMyGameplayAbility的方法拿到所有GA下挂的GE属性与想要的参数,通过方法返回FGameplayAbilityInfo类的对象,将info交给AddToUI方法,由蓝图实现后续。
void AShinbi::AddAbilitytoUI(UMyGameplayAbility *ablity)
{
FGameplayAbilityInfo info = ablity->GetGameplayAbilityInfo();
AddToUI(info);
}
在蓝图中,首先新建一个UMyGameplayAbility的矩阵变量。输入我们的招式。
在主UI蓝图中把所有招式放到一个数组中即可。
第二,打开技能蓝图,按照如下连接,打包好的info从这里送入到技能蓝图,改变技能的图片,显示数值等。
新建一个Material Instance,载入Dash技能图片。
打开DASH招式,载入刚才建好的材质对象。这时候DASH招式的材质对象会被打包送入info。
打开人物蓝图,我们之前的AddToUI方法准备实现。
如果招式等于GA_HEAL,设置到第一个技能栏。
如果招式等于GA_DASH,设置到第二个技能栏。
这里先不设置其他技能栏。
效果如下: