Language:
Page Info
Skill Level:
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

2.1 - 制作新角色

在此步中,我们将使用引擎的 Character 基类制作一个新角色。Character 类(派生自 Pawn 类)内置有双足移动功能,如行走、奔跑、跳跃。

添加 Character 类

可手动添加 *.h 和 *.cpp 文件到 Visual Studio 解决方案,较好的做法是使用 C++ 类向导将新类添加到项目。使用 C++ 类向导后,引擎将创建头和源模板,用于设置虚幻引擎专属的宏。

  1. 在 File 菜单中,选择 New C++ Class... 选择新的父类。

    SelectNewCPPClass.png

  2. Choose Parent Class 菜单将打开。向下滚动,将 Character 选为父类并点击 Next

    ChooseCharacterClass.png

  3. 将新建的类命名为“FPSCharacter”,然后点击 Create

    MakeFPSCharacterClass.png

    创建 FPSCharacter 类后,即可切换到 Visual Studio,为新建的类添加代码。FPSCharacter.hFPSCharacter.cpp 将打开,虚幻引擎将自动编译并加载新类的代码。

验证角色类

  1. Solution Explorer 中展开 FPSProject > Source > FPSProject

    ExpandedSolutionExplorer.png

  2. 双击 FPSCharacter.cpp 打开 FPSCharacter 类的实现文件。

  3. BeginPlay() 函数中添加以下代码行,验证使用的是 FPSCharacter 类。

    if (GEngine)
    {
        // 显示调试信息五秒。-1“键”值(首个参数)说明我们无需更新或刷新此消息。
        GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter."));
    }
  4. FPSCharacter.cpp 应与以下代码相似:

    // 在 Project Settings 的 Description 页面填入版权声明。
    
    #include "FPSProject.h"
    #include "FPSCharacter.h"
    
    // 设置默认值
    AFPSCharacter::AFPSCharacter()
    {
        // 设置此角色每帧调用 Tick()。不需要时可将此关闭,以提高性能。
        PrimaryActorTick.bCanEverTick = true;
    
    }
    
    // 游戏开始时或生成时调用
    void AFPSCharacter::BeginPlay()
    {
        Super::BeginPlay();
    
        if (GEngine)
        {
            // 显示调试信息五秒。-1“键”值(首个参数)说明我们无需更新或刷新此消息。
            GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter."));
        }
    }
    
    // 每帧调用
    void AFPSCharacter::Tick( float DeltaTime )
    {
        Super::Tick( DeltaTime );
    
    }
    
    // 调用后将功能绑定到输入
    void AFPSCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)
    {
        Super::SetupPlayerInputComponent(InputComponent);
    
    }
  5. 在 Visual Studio 中保存 FPSCharacter CPP 文件。

  6. Solution Explorer 中找到 FPSProject

  7. 迄今为止,您便已使用编辑器的 Build 按钮编译项目。在这步中,您将使用 Visual Studio 的构建功能编译代码。编译代码的方法:在 Visual Studio 中右键单击 FPSProject,选择 Build 编译项目。

    BuildProject.png

  8. 构建完成后,打开虚幻编辑器验证新编译的 FPSCharacter 类在 Content Browser 中可见。

    FPSCharacterContentBrowser.png

将 CPP FPS Character 类扩展为蓝图

现在即可将 CPP FPS Character 类扩展为蓝图。在 C++和蓝图 参考页面中可了解 C++ 类扩展为蓝图的更多内容。

  1. 右键单击 FPSCharacter 类打开 C++ Class Actions 菜单。

    CPPClassActionsMenu.png

  2. 点击 Create Blueprint class based on FPSCharacter 打开 Add Blueprint Class 对话菜单。

    CreateDerivedBPClass.png

  3. 将新蓝图类命名为“BP_FPSCharacter”,选择蓝图文件夹,然后点击 Create Blueprint Class 按钮。

    AddBPClass.png

  4. 现在 Blueprints 文件夹中便拥有了一个新建的 BP_FPSCharacter 蓝图类。

    AddedBPClass.png

  5. 关闭蓝图编辑器之前须保存 BP_FPSCharacter 蓝图。

设置默认 Pawn 类

将新建游戏模式成功扩展为蓝图后,此步骤中我们需要设置项目将 BP_FPSCharacter 用作默认 Pawn

  1. Edit 菜单中点击 Project Settings

  2. Project Settings 标签左侧的 Project 标题下点击 Maps & Modes

  3. Default Pawn 下拉菜单中选择 BP_FPSCharacter

    SettingFPSCharacter.png

  4. 关闭 Project Settings 菜单。

  5. 点击关卡编辑器工具栏中的 Play 按钮。“We are using FPSCharacter.”将以红色文本在视口左上角的“Hello World, this is FPSGameMode!”下方显示五秒。

    VerifyingFPSCharacterResult.png

    如您无法移动,即意味着 FPSCharacter 已正确用作 Pawn!新建角色尚未包含移动功能键,因此无法在关卡中移动。

  6. 按下 Esc 键或点击关卡编辑器中的 Stop 按钮退出 Play in Editor(PIE)模式,然后前往下一步。