UE4/5 GAS技能系统入门(上)

简介: UE4/5 GAS技能系统入门

Unreal的GAS技能系统是针对游戏技能管理的一套逻辑封装方案,这套方案考虑面较广,包括了Cooldowns技能冷却、允许多技能同时释放、GameplayTags的使用、特殊的事件触发等,今天就来学习一下。

1.激活插件与C++部分配置
1.1 创建测试工程,选择第三人称案例,C++工程。以便自动创建对应的sln文件。

1.2 以UE5.2版本进行演示,首先在插件管理器中激活GameplayAbilities插件:
q1.png

1.3 打开C++工程的build.cs文件,添加GameplayAbilities模块依赖:

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class MyProject : ModuleRules
{
   
   
    public MyProject(ReadOnlyTargetRules Target) : base(Target)
    {
   
   
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[] {
   
    "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput", "GameplayAbilities" });
    }
}

1.4 找到Character默认角色类的.h头文件,添加相关模块include并实现IAbilitySystemInterface接口:

//头文件
#include "AbilitySystemInterface.h"
#include "AbilitySystemComponent.h"
#include "Abilities/GameplayAbility.h"
//

//省略

//实现接口:
UCLASS(config=Game)
class AMyProjectCharacter : public ACharacter, public IAbilitySystemInterface
{
   
   
    GENERATED_BODY()

//省略

1.5 在Character默认角色类的.h头文件中,定义几个关键函数:

public:
    AMyProjectCharacter();
    //该字段为IAbilitySystemInterface接口暴露字段:
    UAbilitySystemComponent* GetAbilitySystemComponent()const override;

    //实现技能的蓝图必须挂载该组件:
    UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Abilities")
    class UAbilitySystemComponent* AbilitySystemComponent;

    //学习技能函数需要手动实现:
    UFUNCTION(BlueprintCallable, Category = "Abilities")
    void AquireAbility(TSubclassOf<UGameplayAbility>AbilityToAquire);

1.6 来到Character默认角色类的.cpp文件中,实现这几个函数:

AMyProjectCharacter::AMyProjectCharacter()
{
   
   
    //省略

    //构造函数中创建这个组件:
    AbilitySystemComponent = CreateDefaultSubobject<UAbilitySystemComponent>(TEXT("AbilitySystem"));
}
//省略

//实现GetAbilitySystemComponent,返回字段即可
UAbilitySystemComponent* AMyProject2Character::GetAbilitySystemComponent() const
{
   
   
    return AbilitySystemComponent;
}

//自行实现AquireAbility逻辑,其实就是调用内部的GiveAbility接口再初始化

void AMyProject2Character::AquireAbility(TSubclassOf<UGameplayAbility> AbilityToAquire)
{
   
   
    if (AbilitySystemComponent) {
   
   
         if (HasAuthority() && AbilityToAquire) {
   
   
             AbilitySystemComponent->GiveAbility(FGameplayAbilitySpec(AbilityToAquire, 1, 0));
        }
         AbilitySystemComponent->InitAbilityActorInfo(this, this);
    }
}

目前C++部分需要的工作已经处理完成。

相关文章
|
C++
UE4/5中DataTable数据表的使用
UE4/5中DataTable数据表的使用
1404 1
UE4/5中DataTable数据表的使用
|
设计模式 程序员 C++
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
1143 2
|
10月前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
489 3
|
自然语言处理 程序员 Windows
[UE虚幻引擎] DTSpeechVoice 文字转语音播放 插件说明
这个插件用于在虚幻引擎(UE)中通过蓝图将文本转化为语音播放,利用Windows内置的语音引擎,支持Win10和Win11。确保电脑已安装语音系统,可能需要额外下载语言包以支持多语言播放。蓝图操作包括添加Speech Voice Component到Actor,使用Speak节点播放文本,Set Volume调整音量,Set Rate改变播放速度,Pause和Resume控制播放状态,Stop则停止播放且无法恢复。此外,Get Tokens和Set Token用于管理语音类型。更多详情可访问[80后程序员](https://dt.cq.cn/archives/1008?from=aliyun)
398 5
|
网络协议 Shell Windows
搭建rtmp流媒体服务器的步骤
网络上很多问文章介绍使用ffmpeg推送和拉流,经常遗漏安装rtsp-simple-server的步骤,执行推流命令:
608 0
|
运维 监控 网络协议
IPv6地址之间的转换技术:NAT66
【4月更文挑战第25天】
2046 0
IPv6地址之间的转换技术:NAT66
|
算法 程序员 C++
【C/C++ 泛型编程 应用篇】C++ 对多参数的参数包的 参数类型提取 应用
【C/C++ 泛型编程 应用篇】C++ 对多参数的参数包的 参数类型提取 应用
229 5
|
数据挖掘 程序员 Python
【Python】已解决:ModuleNotFoundError: No module named ‘Workbook’
【Python】已解决:ModuleNotFoundError: No module named ‘Workbook’
296 0
|
算法 数据可视化 计算机视觉
opencv Canny边缘检测(python)
opencv Canny边缘检测(python)
|
人工智能 程序员 数据处理
Pandas数据处理3、DataFrame去重函数drop_duplicates()详解
Pandas数据处理3、DataFrame去重函数drop_duplicates()详解
419 0
Pandas数据处理3、DataFrame去重函数drop_duplicates()详解