UE5/C++ 基于GAS的角色升级 7.1 准备好经验值属性
2022/2/14 12:43:24
本文主要是介绍UE5/C++ 基于GAS的角色升级 7.1 准备好经验值属性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.
打开MMOARPGAttributeSet.h,增加经验值属性
UPROPERTY(BlueprintReadOnly, Category = "Attribute", ReplicatedUsing = OnRep_EmpiricalValue) FGameplayAttributeData EmpiricalValue;//经验值 ATTRIBUTE_ACCESSORS(UMMOARPGAttributeSet, EmpiricalValue) UPROPERTY(BlueprintReadOnly, Category = "Attribute", ReplicatedUsing = OnRep_MaxEmpiricalValue) FGameplayAttributeData MaxEmpiricalValue;//最大经验值 ATTRIBUTE_ACCESSORS(UMMOARPGAttributeSet, MaxEmpiricalValue)
2.
绑定OnRep函数,属性值更改时调用
UFUNCTION() virtual void OnRep_EmpiricalValue(const FGameplayAttributeData& OldValue); UFUNCTION() virtual void OnRep_MaxEmpiricalValue(const FGameplayAttributeData& OldValue);
进行实现
void UMMOARPGAttributeSet::OnRep_EmpiricalValue(const FGameplayAttributeData& OldValue) { GAMEPLAYATTRIBUTE_REPNOTIFY(UMMOARPGAttributeSet, EmpiricalValue, OldValue); } void UMMOARPGAttributeSet::OnRep_MaxEmpiricalValue(const FGameplayAttributeData& OldValue) { GAMEPLAYATTRIBUTE_REPNOTIFY(UMMOARPGAttributeSet, MaxEmpiricalValue, OldValue); }
3.
属性复制
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
进行实现
void UMMOARPGAttributeSet::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME(UMMOARPGAttributeSet, EmpiricalValue); DOREPLIFETIME(UMMOARPGAttributeSet, MaxEmpiricalValue); }
4.
提前准备一个方法,用于将属性值提出
virtual void ToMMOARPGCharacterAttribute(FMMOARPGCharacterAttribute& OutData);
进行实现
void UMMOARPGAttributeSet::ToMMOARPGCharacterAttribute(FMMOARPGCharacterAttribute& OutData) { //将属性值提取出来存放进OutData RegistrationParam(OutData.Level, Level); RegistrationParam(OutData.Health, Health); RegistrationParam(OutData.MaxHealth, MaxHealth); RegistrationParam(OutData.Mana, Mana); RegistrationParam(OutData.MaxMana, MaxMana); RegistrationParam(OutData.PhysicsAttack, PhysicsAttack); RegistrationParam(OutData.MagicAttack, MagicAttack); RegistrationParam(OutData.PhysicsDefense, PhysicsDefense); RegistrationParam(OutData.MagicDefense, MagicDefense); RegistrationParam(OutData.AttackRange, AttackRange); RegistrationParam(OutData.MaxEmpiricalValue, MaxEmpiricalValue); RegistrationParam(OutData.EmpiricalValue, EmpiricalValue); }
这篇关于UE5/C++ 基于GAS的角色升级 7.1 准备好经验值属性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板