ue4 点击启动_UE4[C++]ARPG项目中游戏技能系统浅析(一)AttributeSet属性集

a3b0e89e5d0f0d0c4068f494c62b51d3.png

大家好,我是刘茗。

ActionRPG示例项目是UE4中一个展示GameplayAbilitySystem的项目。

使用技能系统的第一步,那就是启用 GameplayAbilities 插件并创建属性集类

下文GAS为GameplayAbilitySystem的简称

一、GAS插件启动

目前GAS是作为UE4的一个引擎插件使用的,所以要先去启动。

打开插件设置,找到GameplayAbilities插件启动

54539c098a43ab55eaf813cb90376b48.png

二、代码文件结构

2f8b3837c16583473f58efebd485f53b.png

37d7f06a04bf5af21212c645d7811764.png

1671c802eba705070c723eec42ff0a3d.png

三、按键绑定(PC端)

2c61cfaff5a503fd0fab9106a024a59d.png

普攻:左键

技能:F键(进入坦克)

翻滚:右键

切换武器:鼠标滑轮

道具栏:Tab键

自动挂机:回车

暂停:ESC键

使用道具:R键

道具栏界面,点击右上角的加号可以增加Souls用来购买技能和装备。

9cdee453a337b32f9748e31a6a89ca7b.png

使用GAS需要添加UAbilitySystemComponent,在ActionRPG.Build.cs文件中添加了GAS模块

5afaef1900d0dfb3670d9b93dabfeebd.png

项目中使用的是派生类URPGAbilitySystemComponent

deb9ae281094b37bc5513bee8f5c6383.png

URPGAbilitySystemComponent在ARPGCharacterBase的构造函数中添加:

4449e1a65f99ef5819b74e41d3597056.png

四、创建属性集

因为此系统仅在C++中支持,因为属性集必须是UAttributeSet的C++子类。

在ARPG项目中,定义了如下属性:

生命、法力、攻击力、防御力、暴击、移动速度等。

5e2b2f7070aa40a4f17db3f8feace85c.png

这里使用的数据结构是FGameplayAttributeData,它内部存储两个数据:基数值和当前值。

26d09720f517416d8796a53a93fd6ab1.png

获取/修改通过Get/Set函数

4309f2d7eb1d9af896fed971677b29ab.png
	UPROPERTY(BlueprintReadOnly, Category = "Damage", ReplicatedUsing = OnRep_DefensePower)
	FGameplayAttributeData DefensePower;
	ATTRIBUTE_ACCESSORS(URPGAttributeSet, DefensePower)

#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName)

这个宏注册了这个属性的4个基础函数

FGameplayAttribute Get##PropertyName##Attribute()

float Get##PropertyName()

void Set##PropertyName

void Init##PropertyName

void URPGAttributeSet::OnRep_Mana()
{
	GAMEPLAYATTRIBUTE_REPNOTIFY(URPGAttributeSet, Mana);
}

GAMEPLAYATTRIBUTE_REPNOTIFY这个宏用于RepNotify函数中,在客户端中修改属性

URPGAttributeSet在RPGCharacterBase.h中声明了变量,并作为Character的友元

5b2cfba9009282539267cba4c9563e13.png

ac3d3dc4123604bc573491fa0b37c1f8.png
	// Create the attribute set, this replicates by default
	AttributeSet = CreateDefaultSubobject<URPGAttributeSet>(TEXT("AttributeSet"));

在Character的构造函数中,创建了属性集对象

以上是对GAS的第一部分的浅析,感谢阅读!

0d8b156d94cd06518faeeee1e43510cb.png
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值