当前位置: 首页 > news >正文

RPG21.创建敌人的AttributeSet,创建角色的GameplayEffect

1.打开AttributeSet

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "AttributeSet.h"
#include "AbilitySystem/XMBAbilitySystemComponent.h"
#include "XMBAttributeSet.generated.h"#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \
GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName)/*** */
UCLASS()
class ARPG_GRIVITY_API UXMBAttributeSet : public UAttributeSet
{GENERATED_BODY()public:UXMBAttributeSet();UPROPERTY(BlueprintReadOnly, Category = "Health")FGameplayAttributeData CurrentHealth;ATTRIBUTE_ACCESSORS(UXMBAttributeSet, CurrentHealth)UPROPERTY(BlueprintReadOnly, Category = "Health")FGameplayAttributeData MaxHealth;ATTRIBUTE_ACCESSORS(UXMBAttributeSet, MaxHealth)UPROPERTY(BlueprintReadOnly, Category = "Rage")FGameplayAttributeData CurrentRage;ATTRIBUTE_ACCESSORS(UXMBAttributeSet, CurrentRage)UPROPERTY(BlueprintReadOnly, Category = "Rage")FGameplayAttributeData MaxRage;ATTRIBUTE_ACCESSORS(UXMBAttributeSet, MaxRage)UPROPERTY(BlueprintReadOnly, Category = "Damage")FGameplayAttributeData AttackPower;ATTRIBUTE_ACCESSORS(UXMBAttributeSet, AttackPower)UPROPERTY(BlueprintReadOnly, Category = "Damage")FGameplayAttributeData DefensePower;ATTRIBUTE_ACCESSORS(UXMBAttributeSet, DefensePower)};
// Fill out your copyright notice in the Description page of Project Settings.#include "AbilitySystem/XMBAttributeSet.h"UXMBAttributeSet::UXMBAttributeSet()
{InitCurrentHealth(1.f);InitMaxHealth(1.f);InitCurrentRage(1.f);InitMaxRage(1.f);InitAttackPower(1.f);InitDefensePower(1.f);
}

2. 创建GE

创建linear的曲线表格,然后创建表格

然后设置GE

后面添加的三个属性也是一样的操作

3.再创建一个GE,用于设置玩家静态属性

对CurrentRage一样操作

4.接下来需要把创建好的GE设置在角色上,打开StartUpBase.h创建一个GE类型的变量

Protected:
UPROPERTY(EditDefaultsOnly, Category = "StartUpData")TArray<TSubclassOf<UGameplayEffect>> StartUpGameplayEffects;

逻辑写在GiveToAbilitySystemComponent()内

void UDataAsset_StartUpDataBase::GiveToAbilitySystemComponent(UXMBAbilitySystemComponent* InASCToGive, int32 ApplyLevel)
{check(InASCToGive);GrantAbilities(ActivateOnGivenAbilities, InASCToGive, ApplyLevel);GrantAbilities(ReactiveAbilities, InASCToGive, ApplyLevel);if (!StartUpGameplayEffects.IsEmpty()){for (const TSubclassOf<UGameplayEffect>& EffectClass : StartUpGameplayEffects){if (!EffectClass) continue;UGameplayEffect* EffectCDO = EffectClass->GetDefaultObject<UGameplayEffect>();InASCToGive->ApplyGameplayEffectToSelf(EffectCDO,ApplyLevel,InASCToGive->MakeEffectContext()//从目标 ASC 创建一个新的效果上下文,包含与效果应用相关的信息);}}
}

然后启动项目,打开DA_XMBStartUpAbilities

顺序不能乱,得先进行StartUp(能力创建)在进行Static(能力初始化)

5.接下来创建敌人的GE,先创加好表格

设置好Ge_StartUpAbility

然后设置GE_Static

相关文章:

  • 【Rust 高级trait】Rust trait的一些高级用法解密
  • 【算法深练】分组循环:“分”出条理,化繁为简
  • Paraformer分角色语音识别-中文-通用 FunASR
  • 数控矫平机:深潜技术内核与智造前沿
  • Python try-except-else 语句详解
  • 夏普比率(Sharpe ratio)​
  • [C++入门]简化的艺术---对模版的初步探索
  • django ssh登录 并执行命令
  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • k8s集群安装坑点汇总
  • SQL-为什么缺少 COUNT(*) 会导致总行数返回1
  • 07 APP 自动化- appium+pytest+allure框架封装
  • OA工程自动化办公系统 – 免费Java源码
  • Selenium自动化测试工具安装和使用(PyCharm)
  • Java高级 | 【实验四】Springboot 获取前端数据与返回Json数据
  • 设计模式之单例模式(二): 心得体会
  • 详解ZYNQ中的 RC 和 EP
  • TPU(张量处理单元)和 TVM(张量虚拟机)深度分析
  • 知识拓展卡————————关于Access、Trunk、Hybrid端口
  • Ros(俩不同包的节点 交流 topic message)
  • 网站开发与设计作业/seo长尾关键词优化
  • 网站做收录是什么意思/深圳百度seo公司
  • 网站前端代码有哪些问题/公司官网搭建
  • 地方旅游网站开发/如何弄一个自己的网站
  • wordpress微信付费/优化营商环境 提升服务效能
  • 文案转行做网站编辑/推广关键词