当前位置: 首页 > 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

http://www.dtcms.com/a/230461.html

相关文章:

  • 【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)
  • 敏捷项目管理:重塑价值交付的动态协作范式
  • 玄机-第六章 流量特征分析-蚂蚁爱上树
  • 将word文件转为kindle可识别的azw3文件的方法
  • 让音乐“看得见”:使用 HTML + JavaScript 实现酷炫的音频可视化播放器
  • VS代码生成工具ReSharper v2025.1——支持.NET 10和C# 14预览功能
  • 如何配置一个sql server使得其它用户可以通过excel odbc获取数据
  • HTTP(超文本传输协议)详解
  • [特殊字符] 在 React Native 项目中封装 App Icon 一键设置命令(支持参数与默认路径)
  • 鸿蒙开发:hvigorw,编译构建,实现命令打包
  • 《高等数学》(同济大学·第7版)第一章第六节极限存在准则 两个重要极限