UE5/C++ 1.GAS技能系统组件,基础环境布置

所有知识点均出自于UE5游戏开发——MMOARPG游戏架构开发研修班| ABOUTCG视频教程

感谢人宅老师的教导

1.打开UE5引擎,打开插件面板,勾选GamePlayAbilitySystem插件并重启引擎

打开项目Buids.cs文件,包含AbilitySystemComponent的模块

"GameplayAbilities",
"GameplayTags",
"GameplayTasks",

2.创建AbilitySystemComponent的C++文件,这里我命名为MMOARPGAbilitySystemComponent

 打开MMOARPGAbilitySystemComponent.h,添加GetAbilitySystemComponentFromActor方法

#pragma once#include "CoreMinimal.h"
#include "AbilitySystemComponent.h"
#include "MMOARPGAbilitySystemComponent.generated.h"/*** */
UCLASS()
class MMOARPGGAME_API UMMOARPGAbilitySystemComponent : public UAbilitySystemComponent
{GENERATED_BODY()
public:UMMOARPGAbilitySystemComponent();static UMMOARPGAbilitySystemComponent* GetAbilitySystemComponentFromActor(const AActor* Actor, bool LookForComponent = false);
};

实现这个方法,方法返回AbilitySystemComponent

#include "MMOARPGAbilitySystemComponent.h"
#include "AbilitySystemGlobals.h"
#include "../Character/Core/MMOARPGCharacterBase.h"UMMOARPGAbilitySystemComponent::UMMOARPGAbilitySystemComponent()
{}UMMOARPGAbilitySystemComponent* UMMOARPGAbilitySystemComponent::GetAbilitySystemComponentFromActor(const AActor* Actor, bool LookForComponent)
{//返回AbilitySystemComponent,强转为MMOARPGAbilitySystemComponentreturn Cast(UAbilitySystemGlobals::GetAbilitySystemComponentFromActor(Actor, LookForComponent));
}

3.创建AbilitySystemComponent,绑定到角色身上

打开CharacterBase.h,

#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "AbilitySystemInterface.h" //包含技能组件接口
#include "../../Abilities/MMOARPGAbilitySystemComponent.h"
#include "CharacterBase.generated.h"class UMMOARPGAbilitySystemComponent;//前置声明class MMOARPGGAME_API CharacterBase : public ACharacter,public IAbilitySystemInterface //继承技能系统接口
{GENERATED_BODY()UPROPERTY(Category = MMOARPGCharacterBase, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))TObjectPtr AbilitySystemComponent;public:CharacterBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());virtual UAbilitySystemComponent* GetAbilitySystemComponent() const;//必须拥有此方法,用于获取AbilitySystemComponent}

打开CharacterBase.cpp,进行实现

#include "MMOARPGCharacterBase.h"AMMOARPGCharacterBase::AMMOARPGCharacterBase(const FObjectInitializer& ObjectInitializer):Super(ObjectInitializer)
{// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;AbilitySystemComponent = CreateDefaultSubobject(TEXT("AbilitySystemComponent"));//构造函数中创建AbilitySystemComponentAbilitySystemComponent->SetIsReplicated(true);
}UAbilitySystemComponent* CharacterBase::GetAbilitySystemComponent() const
{return AbilitySystemComponent;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部