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

相关文章
|
3月前
|
安全 前端开发 测试技术
LP质押模式系统开发技术规则
LP质押模式系统开发结合了DeFi和区块链技术,允许用户将代币质押到流动性池中获取奖励。系统包括需求调研、区块链平台选择(如Ethereum、BSC、Polygon)、智能合约开发、前端界面设计、安全审计及测试、部署上线和持续优化。通过模块化设计和多签名机制,确保系统的高可用性、安全性和可扩展性,为用户提供高效、安全的资产增值途径。
|
存储 区块链 数据库
DAPP流动性质押LP合约系统开发(成熟案例)|详情规则
简单地说,区块链是一个建立在互联网上的公共的账本,互联网上每个人的计算机中,都可以有这样一个账本
|
存储 算法 网络协议
LP流动性质押SWAP交易所系统开发|方案逻辑|规则案例
智能合约是指一种独立的、自动执行的代码
|
前端开发 安全 JavaScript
  FDF智能合约互助游戏开发系统丨FDF互助复利模式智能合约部署
明确系统的功能需求和目标,了解FDF互助复利模式的规则和机制,确定游戏系统的设计方向。
|
编译器 区块链
BSC/Pancake套利策略智能合约dapp开发代码部署示例
BSC/Pancake套利策略智能合约dapp开发代码部署示例
|
JavaScript 前端开发 区块链
DIDSWAP智能合约质押LP项目系统开发|DIDSWAP逻辑详情说明
document.all.img1.offsetLeft 智能合约是区块链技术中重要的一部分
|
存储 BI 分布式数据库
BSC链DAPP双币质押LP模式系统开发|LP算力案例|详情方案
horizontal and vertices strides,`strides=[1,stride,stride,1]`
|
安全 区块链
互助众筹FDF循环模式开发系统智能合约技术
智能合约的整个产生和执行过程都是可追溯、不可篡改的。一旦触发合约就会立即执行,自动按照合约规范进行操作。整个过程智能高效,短时间快速完成更是体现了它的准确和经济。
互助众筹FDF循环模式开发系统智能合约技术
|
区块链
智能合约FDF循环互助游戏系统开发逻辑源码详情
智能合约FDF循环互助游戏系统开发逻辑源码详情