GameplayAbilitiesSystem(三)

目录

前言

上一章节中我们创建好了项目,配置好了版本管理工具(Git)。打开 UE5 可以在 Content Drawer 中看到如下项目结构:

项目初始结构完成后,下一步可以开始创建 C++ 类。创建 C++ 类先从角色开始,但在开始之前,我们先检查一下我们准备的素材有没有问题。依次点击 Content Drawer,选择 Content - Assets - Characters - Aura 目录,如果没有问题,右侧会有名称 SKM_Aura 的 Skeletal Mesh 文件,双击打开,如果显示如下则没有问题。

接下来我们需要创建的 C++ 类来指向它。

父类

创建角色类之前,我们应该考虑到,游戏中不仅有角色,还有敌人,这两者之间有些功能(或说特性)是共通,所以没有必要写两套。

角色和敌人继承相同父类就可以实现特性共享。

创建父类

点击菜单栏 【Tools】-【New C++ Class...】,打开创建 C++ 类窗口。

选择 【Common Classes】-【Character】,点击【Next】。

选中 Public 选项,父类起名为 AuraCharacterBase,同时注意类文件所在路径是否正确,然后点击【Create Class】。

由于我们关闭了 Live Coding,所以在创建新类时不会自动编译,只会生成 C++ 类文件。生成结束后关闭 UE5。引擎会自动为我们生成 Aura.sln 文件,双击打开。

首次使用 Visual Studio 2022 打开项目,会提示安装必要组件,直接点击安装即可。然后点开 Games - Aura - Source - Aura - Private, Public 目录,便能看到刚才创建的类文件。

注:到此,考虑将刚才创建的类文件使用版本管理工具提交到远程仓库中。之后每完成一部分功能,务必执行一次版本管理操作,防止丢失数据,养成好习惯。

父类优化

父类不需要有实例,所以可以设置为 Abstract,同时也不需要执行任何 Tick 操作,而角色输入会单独配置,敌人也会配置 AI 控制器,所以父类也不需要任何输入功能组件。因此对父类做出以下优化:

  • 标注为 Abstract 类型;
  • 删除 Tick() 和 SetupPlayerInputComponent() 方法;
  • 设置 bCanEverTick 为 false;
  • 删除一些不必要的注释(可选)。

优化后的父类头文件和 .cpp 文件内容如下:

AuraCharacterBase.h

c 复制代码
// Copyright Markus La

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "AuraCharacterBase.generated.h"

UCLASS(Abstract)
class AURA_API AAuraCharacterBase : public ACharacter
{
	GENERATED_BODY()

public:
	// Sets default values for this character's properties
	AAuraCharacterBase();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
};

AuraCharacterBase.cpp

c 复制代码
// Copyright Markus La


#include "Character/AuraCharacterBase.h"

// Sets default values
AAuraCharacterBase::AAuraCharacterBase()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = false;
}

// Called when the game starts or when spawned
void AAuraCharacterBase::BeginPlay()
{
	Super::BeginPlay();
}

为了使项目结构更合理,我们把父类,角色类,敌人类都放到 Character 目录下,所以需要将项目结构进行调整。

Visual Studio 中调整项目结构比较麻烦。这里我们先关闭 Visual Studio 2022,在 Source - Aura - Private, Public 目录中分别创建 Character 文件夹,再将 AuraCharacterBase.h 和 AuraCharacterBase.cpp 移动至各自的 Character 文件夹中。回到项目根目录,删除 Binaries、Intermediate 两个文件夹,右键 Aura.uproject 文件,选择 Generate Visual Studio project files。

成功后再打开 Aura.sln,即可完成项目结构的调整。

角色和敌人类

创建好父类后,打开 Visual Studio 2022,点击运行(本地 Windows 调试器),会打开 UE5。打开 Content Drawer,会看到与Content 目录同级多出了 C++ Classes 的目录,点开会看到 Aura - Public - Character 目录,选择 Character 目录,右侧就能看到我们创建的 AuraCharacterBase 类。

创建角色类

角色类和敌人类的创建过程大体相似,所以仅以角色类的创建为例。

右键 AuraCharaqcterBase 父类,选择 Create C++ class derived form AuraCharacterBase,如上图所示。同样,先为角色类起名为 AuraCharacter,过程同创建父类差不多,提示"创建 AuraCharacter 类成功,但要想看到需先编译,是否需要编辑代码?",同样我们选择否。

相同的过程创建敌人类,名称为 AuraEnemy。

关闭 UE5,打开 Visual Studio 2022 查看类文件是否创建成功。

相关推荐
妙为3 天前
UE5中武器未跟随角色
ue5·gas·gameplay
Joy T1 个月前
【Web3】深入解析Coin-Token、ERC20-ERC721、自定义错误机制与合约继承
web3·代币·自定义错误·gas·erc-20·原生币·合约继承
qq_428639615 个月前
aura:学习大纲
gas·aura
许强0xq5 个月前
Q10: 对于地址白名单,使用 mapping 还是 array 更好?为什么?
面试·职场和发展·web3·solidity·evm·gas
小码闭眼ctrv7 个月前
gas 优化
区块链·solidity·gas
开发游戏的老王9 个月前
[BUG]关于UE5.6编译时出现“Microsoft.MakeFile.Targets(44,5): Error MSB3073”问题的解决
c++·ue5·bug·虚幻·虚幻5·gas