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++部分需要的工作已经处理完成。

相关文章
|
6月前
|
算法 安全 区块链
IPPswap智能合约单边上涨/螺旋上涨质押lp挖矿模式系统开发指南教程/步骤需求
首先我们需要理解,IPPswap螺旋上涨项目系统是一种基于区块链的去中心化金融(DeFi)机制,其中将使用一种被称为"螺旋上涨"的模型以有利于持币者并降低投机行为。 开发IPPswap螺旋上涨项目系统,可能需要以下几个方面:
|
8月前
|
安全 虚拟化 数据安全/隐私保护
eve-ng镜像模拟设备-信息安全管理与评估-2023国赛
eve-ng镜像模拟设备-信息安全管理与评估-2023国赛
|
8月前
|
人工智能 安全
外汇MT5/MT4交易所平台系统开发测试版/案例设计/策略步骤/功能需求/源码程序
When developing the MT5/MT4 foreign exchange documentary trading system, the following functions and intelligence can also be considered:
|
8月前
|
存储 安全 区块链
SWAP|LP|DAPP质押项目系统开发(模式方案)
去中心化是相对于传统“中心化”网络模式而言的新型内容生产过程。
|
8月前
|
安全 区块链 AndFix
dapp丨swap丨lp智能合约只涨不跌模式系统开发详细案例/指南教程/步骤项目/源码设计
Requirement analysis: Clarify the functional requirements and business logic of the system. Determine the asset types, transaction rules,
|
存储 机器学习/深度学习 算法
深入分析defi/dao/ido/dapp/lp/swap交易所代币合约项目系统开发(逻辑方案)/成熟技术/案例详细/源码部署
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式
|
存储 安全 区块链
DeFi质押LP系统开发(方案模式)|DeFi质押LP合约模式系统开发指南
Web3.0中,机器将根据交易历史、用户数据,以及其他可以获取的信息来学习和提高其预测和响应能力
|
存储 BI 分布式数据库
BSC链DAPP双币质押LP模式系统开发|LP算力案例|详情方案
horizontal and vertices strides,`strides=[1,stride,stride,1]`
|
安全 5G 定位技术
IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!
WiFi对于现在的家庭来说,属于司空见惯的上网方式,但很多情况下,家里房间多、空间大、杂物乱的情况下,WiFi的信号就受影响。为什么WiFi信号会受影响?什么情况下该使用何种方式组网?如何改善WiFi信号差的问题?等等,本文将通俗易懂地为你找到这些问题的答案。
180 0
IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!