目录
前言
上一章节中我们创建好了项目,配置好了版本管理工具(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 查看类文件是否创建成功。
