虚幻四Gameplay Ability System入门(7)-Gameplay Effect详解(2)自定义Calculation Class

本篇文章主要参考EPIC商场的RPG游戏demo。实现GE计算中使用自定义的Calculation Class

新建Attribute

打开AttributeSetBase.h/cpp,增加两个属性Damage和Armor,方法和之前的一样,这里就直接贴代码了。

UCLASS()
class GAS_LEARN_API UAttributeSetBase : public UAttributeSet
{
   
	GENERATED_BODY()

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Attributes", ReplicatedUsing=OnRep_Damage)
	FGameplayAttributeData Damage;
	ATTRIBUTE_ACCESSORS(UAttributeSetBase, Damage);

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Attributes", ReplicatedUsing=OnRep_Armor)
	FGameplayAttributeData Armor;
	ATTRIBUTE_ACCESSORS(UAttributeSetBase, Armor);

	UFUNCTION()
  virtual void OnRep_Damage(const FGameplayAttributeData& OldDamage);

	UFUNCTION()
	virtual void OnRep_Armor(const FGameplayAttributeData& OldArmor);

};
void UAttributeSetBase::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
   
	Super::GetLifetimeReplicatedProps(OutLifetimeProps);

	DOREPLIFETIME_CONDITION_NOTIFY(UAttributeSetBase, Damage, COND_None, REPNOTIFY_Always);
	DOREPLIFETIME_CONDITION_NOTIFY(UAttributeSetBase, Armor, COND_None, REPNOTIFY_Always);
}

void UAttributeSetBase::OnRep_Damage(const FGameplayAttributeData& OldDamage)
{
   
	GAMEPLAYATTRIBUTE_REPNOTIFY(UAttributeSetBase, Damage, OldDamage);
}

void UAttributeSetBase::OnRep_Armor(const FGameplayAttributeData& OldArmor)
{
   
	GAMEPLAYATTRIBUTE_REPNOTIFY(UAttributeSetBase, Armor, OldArmor);
}

初始化两个属性。
Untitled.png

打开之前创建的DataTable。可能有人没有看过之前的文章,这里我再贴一次流程图。
Untitled 1.png

打开角色蓝图的ASC的Default Settings。

Untitled 2.png

Untitled 3.png

如果不想用DataTable,也可以使用一个gameplay effect赋初值。
Untitled 4.png
然后通过ApplyGameplayEffectToSelf来赋初值。

Custom Calculation Class

新建类

这里我命名为GMM_DamageExecutionCalculation。
Untitled 5.png

实现

打开GMM_DamageExecutionCalculation.h

这里通过重写方法CalculateBaseMagnitude_Implementation,返回的float值即为计算得到的Magnitude,用于修改指定的Attribute。

UCLASS(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值