首页 > 其他分享 >Unreal-GAS-2-AttributeSet

Unreal-GAS-2-AttributeSet

时间:2023-04-30 13:22:05浏览次数:42  
标签:UMyHealthSet AttributeSet PropertyName GAS Unreal Health void 属性

这篇随笔用于忘记AttributeSet是什么后快速想起来和上手

AttributeSet属性集是表示Actor各种属性值的集合,保存在ASC中,是GE的主要作用目标

比如继承一个AttributeSet后

新建公有成员变量

UPROPERTY(BlueprintReadOnly , Category = "Health", ReplicatedUsing = OnRep_Health) FGameplayAttributeData Health; ATTRIBUTE_ACCESSOTS(UBasicAttributeSet,Health) 其中ReplicatedUsing = OnRep_Health是强制委托,当这个值被改变时调用OnRep_Health函数

ATTRIBUTE_ACCESSOTS属性访问器宏是在属性声明后给属性添加的宏,其定义在源码AttributeSet.h最后:

#define ATTRIBUTE_ACCESSORS(ClassName,PropertyName)\
GAMEPLAYATTRUBUTE_PROPERTY_GETTER(ClassName,PropertyName)\
GAMEPLAYATTRUBUTE_VALUE_GETTER(PropertyName)\
GAMEPLAYATTRUBUTE_VALUE_SETTER(PropertyName)\
GAMEPLAYATTRUBUTE_VALUE_INITTER(PropertyName) 代表四个方法: 拿到属性:static FGameplayAttribute UMyHealthSet::GetHealthAttribute();
拿到值:FORCEINLINE float UMyHealthSet::GetHealth()const;
设置值:FORCEINLINE void UMyHealthSet::SetHealth(float NewVal);
初始化值:FORCEINLINE void UMyHealthSet::InitHealth(float Newval); 新建公有成员函数: 更改属性之前调用:virtual void PreAttributeChange(const FGameplayAttribute& Attribute,float& NewValue) override;
更改属性之后调用:virtual void PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data) override;   配置好GE后给玩家类(比如Character)添加:
protected: UPROPERTY()
class UBasicAttributeSet* BasicAttributeSet;
并且在构造函数里面初始化:
BasicAttributeSet = CreateDefaultSubobject<UBasicAttributeSet>(TEXT("BasicAttributeSet"))
然后在其他类里读取值就是:获得玩家类->GetAbilitySystemComponent->GetFloatAttributeFromAbilitySystemComponent
改变值就是:获得玩家类->GetAbilitySystemComponent->ApplyGameplayEffectToSelf调用一个GE修改该值

标签:UMyHealthSet,AttributeSet,PropertyName,GAS,Unreal,Health,void,属性
From: https://www.cnblogs.com/ikun-proto/p/17365171.html

相关文章

  • UnrealEngine - 网络同步之连接篇
    1连接过程-握手传统的C/S架构下,Client和Server通常会建立一条抽象的Connection,用来进行两端的通信。UE的官方文档中提供了Client连接到Server的示例,简单来说分为如下几步:打包构建好Client和Server进程启动Server进程,启动参数为./Binaries/Win64/<PROJE......
  • 传送,条件加速 Learn Unreal Engine (with C++)
    传送pawn进入box触发OnActorBeginOverlap获取目标位置,下一帧将pawn坐标更改为目标位置首先需要重叠函数与开始重叠事件绑定OnActorBeginOverlap.AddDynamic(this,&ATeleporterActor::OnOverlapBegin);头文件声明UPROPERTY(EditAnywhere) ATeleporterActor*Target=nullptr......
  • UE ActionRPG 项目拆解(二):默认武器斧子的 Normal Attack 技能为着手点,了解 GAS 的使用
    按键触发技能绑定(按下NormalAttack绑定的快捷键时,调用DoMeleeAttack函数)DoMeleeAttack函数中,调用ActivateAbilitiesWithItemSlot函数ActivateAbilitiesWithItemSlot函数中,调用了 AbilitySystemComponent->TryActivateAbility()函数至此我们知道:按下NormalAttack绑......
  • UnrealEngine - 网络同步入门
    1网络同步机制UE提供了强大的网络同步机制:RPC:可以在本地调用,对端执行属性同步:标记一个属性为UPROPERTY(Replicated)就可以自动将其修改后的值同步到客户端移动复制:Actor开启了移动复制后会自动复制位置,旋转和速度创建和销毁:Server创建Actor时根据其权限会在所有连......
  • 为虚幻引擎C++项目设置Visual Studio开发环境 | 虚幻引擎5.1文档 (unrealengine.com)
    设置VisualStudio设置VisualStudio以使用虚幻引擎的提示、技巧和技术Beginner本页面的内容版本兼容性新安装VisualStudio时的选项推荐设置虚幻引擎(简称UE) 能与 VisualStudio(简称VS) 完美结合,使你能够快速、简单地改写项目代码,并能即刻查......
  • Unreal音频录制流程分析
    先看一下录音数据的存储结构 /************************************************************************/ /*FAudioRecordingData*/ /*ThisisusedbyUSoundSubmixandtheAudioMixerBlueprintLibrary*/ /*......
  • 【Debug】记录在 Unreal Engine 使用中遇到的亿点小问题
    解决UE中的字体乱码问题问题描述:当你开开心心的导入字体,打算一展设计功底时,却发现字体乱码了 解决思路:                  ......
  • 深入认识Tigase XMPP Server(上)
    深入认识TigaseXMPPServer(上)作者:chszs本文的目的是深入认识TigaseXMPPServer的特性。1、TigaseHTTPAPI实现XMPP和HTTP之间的桥梁,可通过REST调用实现对Tigase安装的管......
  • IDEA社区版找不到SpringAssistant插件下载的解决办法
    进入JetBrains的官方网站搜索插件网址如下https://plugins.jetbrains.com/plugin/10229-spring-assistant/versions/stable打开IntelliJ文件夹,将下载所得内容解压缩到如下......
  • 以太坊中gas、gasPrice、gasLimit是什么?手续费不足异常(insufficient funds)的解决
     1.什么是gas?gas是“燃料”的意思。在以太坊区块链上实现了一个EVM(以太坊虚拟机)的代码运行环境,在链上执行写入操作时,网络中的每个全节点都会进行相同的计算并存储相同......