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

相关文章
|
4月前
|
小程序 JavaScript Java
基于微信小程序的加油站服务管理系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的加油站服务管理系统设计与实现(源码+lw+部署文档+讲解等)
52 0
|
4月前
|
前端开发 IDE 小程序
付费自习室系统设计与实现(源码+lw+部署文档+讲解等)
付费自习室系统设计与实现(源码+lw+部署文档+讲解等)
53 0
|
4月前
|
安全 区块链 AndFix
dapp丨swap丨lp智能合约只涨不跌模式系统开发详细案例/指南教程/步骤项目/源码设计
Requirement analysis: Clarify the functional requirements and business logic of the system. Determine the asset types, transaction rules,
|
4月前
|
安全 AndFix
swap/dapp/lp只涨不跌项目系统开发详细程序/案例开发/功能逻辑/需求设计/源码技术
Developing an LP (Liquidity Pool) system that only rises without falling requires the following steps
|
8月前
UE4/5 GAS技能系统入门(下)
UE4/5 GAS技能系统入门
63 0
|
8月前
|
安全 前端开发 JavaScript
DeFi/ IDO /DAO/DAPP/LP/Swap代币兑换底池交易所项目系统开发步骤需求丨案例项目丨方案逻辑丨详细流程丨源码部署
Requirement analysis: Clarify project objectives, functional requirements, and business models. Understand the different components of the DeFi ecosystem, such as IDO (initial issuance), DAO (decentralized autonomous organization), DApp (decentralized application), LP (liquidity provider), and Swap
|
10月前
|
存储 机器学习/深度学习 算法
深入分析defi/dao/ido/dapp/lp/swap交易所代币合约项目系统开发(逻辑方案)/成熟技术/案例详细/源码部署
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式
|
10月前
|
前端开发 安全 Java
BSC链DAPP智能合约NFTswap/IPPswap/Defiswap/OMNIswap系统开发(开发方案)/项目程序/案例源码
  什么是智能合约DApp   智能合约DApp是计算机程序,通过它,交易双方可以共同完成交易。如果在执行过程中发生了一系列变化,那么智能合约将会记录这些变化并自动执行这些变化。
|
12月前
|
区块链
智能合约FDF循环互助游戏系统开发逻辑源码详情
智能合约FDF循环互助游戏系统开发逻辑源码详情
|
安全 区块链 数据安全/隐私保护
FT质押挖矿DAPP系统开发详情(现成案例搭建)
区块链是安全性和去中心化水平都极高的网络,人们可以在一个共享账本中储存数据、交换价值并记录交易活动,而且这个账本不受任何中心化实体控制。