1 - 建立项目

如何建立第一人称射击游戏项目。

Choose your operating system:

Windows

macOS

Linux

SectionResult.png

完成本节后你将会看到以上内容。

目的

本节旨在展示如何建立第一人称射击游戏项目。

目标

完成教程的这一节后,你将能够:

  • 建立新项目

  • 设置编辑器启动地图

  • 在Visual Studio中打开项目

  • 为项目添加日志消息

  • 编译你的第一个C++类

  • 设置默认游戏模式

步骤

  • 1.1 - 建立项目

  • 1.2 - 在Visual Studio中打开项目

  • 1.3 - 添加日志消息

  • 1.4 - 编译项目

  • 1.5 - 设置默认游戏模式

  • 1.6 - 第一节总结

1.1 - 建立项目

在这一步中,我们将使用虚幻引擎项目浏览器为我们的第一人称射击游戏(FPS)创建一个起始点。

  1. 通过Epic启动器打开 虚幻引擎 ,然后选择 创建新项目

  2. 点击 游戏(Games) 新项目类别,然后点击 下一步(Next)

  3. 选择 空白模板(Blank template) ,然后点击 下一步(Next)

  4. 将项目类型更改为 C++ (而非 蓝图(Blueprint) ),确保选中 无初学者内容(No Starter Content)

  5. 将新项目命名为"FPSProject"。

    FPS_ProjectSettings.png

    如果使用了其他项目名称,则本教程中的一些代码示例需要相应更改。

  6. 命名项目后,继续并点击 创建项目(Create Project) 按钮。

  7. 创建项目后,该项目会自动在虚幻编辑器中打开。此时点击 运行(Play) ,便可进入编辑器内运行(PIE)模式。

    ClickPlayButton.png

    用鼠标调整视角,同时使用WASD键在关卡内移动。

  8. 按Esc键或在关卡编辑器中点击 停止(Stop) ,即可退出PIE模式。

    ClickStopButton.png

  9. 你已完成对关卡的探索,现在转到 内容浏览器(Content Browser) (通常在屏幕底部附近),在 内容(Content) 文件夹下创建一个 地图(Maps) 文件夹(选择内容文件夹,在其中任意位置点击右键,选择 文件夹(Folder) > 新建文件夹(New Folder) )。

    MapsFolder.png

  10. 文件(File) 菜单中,选择 将当前内容另存为(Save Current as...) ,然后点击地图文件夹。将新地图命名为"FPSMap",然后点击 保存(Save)

    SaveLevelAs.png

  11. 编辑(Edit) 菜单中,点击 项目设置(Project Settings)

    EditProjectSettings.png

  12. 项目设置(Project Settings) 选项卡左侧的 项目(Project) 标题下,点击 地图和模式(Maps & Modes)

    ProjectMaps_Modes.png

  13. 展开 编辑器启动地图(Editor Startup Map) 下拉菜单,选择 FPSMap

    EditorDefaultMap.png

    从现在开始,编辑器将自动加载FPSMap作为默认地图。

  14. 最后,关闭 项目设置(Project Settings) 菜单,保存项目,然后继续下一步骤。

1.2 - 在Visual Studio中打开项目

在上一步中建立 基础代码(Basic Code) 项目后,虚幻引擎为你创建了一个 游戏模式(Game Mode) 。游戏模式定义游戏规则和获胜条件。游戏模式还会设置一些默认类,用于某些基本游戏框架类型,包括Pawn、PlayerController和HUD等。本节中,你将使用编辑器将你的项目作为解决方案在Visual Studio中打开,以便查看项目的游戏模式类。

  1. 展开 文件(File) 菜单,选择 打开Visual Studio(Open Visual Studio) ,便可在Visual Studio中打开C++代码。

    FileMenu_OpenVS.png

  2. 在Visual Studio启动项目之后,你应该会在Visual Studio的 解决方案资源管理器 中看到 .cpp .h 文件。

    VS_SolutionExplorer.png

    如果示例图中的Visual Studio与你的Visual Studio看起来略有不同,无需紧张,我们只是使用了"深色主题"。要启用深色主题,转到:工具(Tools)>选项(Options)>环境(Environment)>常规(General)>颜色主题(Color Theme)。

  3. 展开 源(Source) ,然后展开 FPSProject 以查看你的新游戏的主要文件。

  4. 打开FPSProjectGameModeBase.cpp。文件内容应如下所示:

    // Epic Games, Inc版权所有。保留所有权利。
    
    #include "FPSProjectGameModeBase.h"
  5. 现在打开FPSProjectGameModeBase.h。文件内容应如下所示:

    // Epic Games, Inc版权所有。保留所有权利。
    
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/GameModeBase.h"
    #include "FPSProjectGameModeBase.generated.h"
    
    /**
     * 
     */
    UCLASS()
    class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase
    {
        GENERATED_BODY()
    };
  6. 现在你已经在Visual Studio中打开了C++项目,可以开始向项目中添加代码了。

1.3 - 添加日志消息

向项目中添加代码的一个不错的起点是向FPSGameMode添加一条日志消息。日志消息对于在开发期间验证和调试代码非常有用。在这一步中,你将使用日志消息来验证自己确实在使用FPSGameMode而非虚幻引擎提供的默认游戏模式。

FPSProjectGameMode头文件

  1. 解决方案资源管理器 中,展开 FPSProject > 源(Source) > FPSProject

  2. 双击 FPSProjectGameModeBase.h 打开 FPSGameMode 类的头文件。

    InterfaceFile.png

  3. 类声明应该如下所示:

    UCLASS()
    class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase
    {
    GENERATED_BODY()
    
    };
  4. AFPSProjectGameMode 构造函数声明下方添加以下函数声明:

    virtual void StartPlay() override;

    此函数声明允许你重载 StartPlay ,以便游戏启动时在屏幕上打印日志消息。

  5. FPSProjectGameMode.h 应如下所示:

    // Epic Games, Inc版权所有。保留所有权利。
    
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/GameModeBase.h"
    #include "FPSProjectGameModeBase.generated.h"
    
    /**
     * 
     */
    UCLASS()
    class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase
    {
    GENERATED_BODY()
    
    virtual void StartPlay() override;
    };
  6. 在Visual Studio中保存你的头文件。

FPSProjectGameMode CPP文件

  1. 解决方案资源管理器 中,定位到 FPSProjectGameModeBase.cpp FPSProject >源(Source)> FPSProject )。

    ImplementationFile.png

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

  3. 现在将以下代码行添加到该文件中:

    void AFPSProjectGameModeBase::StartPlay()
    {
    Super::StartPlay();
    
    check(GEngine != nullptr);
    
      // 显示调试消息五秒。 
      // 参数中的-1"键"值类型参数能防止该消息被更新或刷新。
      GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameMode!"));
    
    }

    游戏启动时,StartPlay()将在屏幕上打印一条新的调试消息("Hello World, this is FPSGameModeBase!"),采用黄色文本,显示五秒钟。

  4. FPSProjectGameModeBase.cpp 应如下所示:

    // Epic Games, Inc版权所有。保留所有权利。
    
    #include "FPSProjectGameMode.h"
    
    void AFPSProjectGameModeBase::StartPlay()
    {
    Super::StartPlay();
    
    check(GEngine != nullptr);
    
    // 显示调试消息五秒。 
    // -1"键"值参数防止该消息被更新或刷新。
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameModeBase!"));
  5. 在Visual Studio中保存CPP文件。

1.4 - 编译项目

是时候编译项目了,这样你就能看到新代码在游戏中的表现。

  1. 回到编辑器,点击 编译(Compile) 按钮编译代码。

    CompileProject.png

    因为你的项目以C++项目的形式进行开发,所以可以从虚幻编辑器中直接编译CPP代码。

  2. 继续并点击 运行(Play) 按钮,进入在编辑器内运行(PIE)模式。

    PIE_DefaultGameMode.png

    你可能有点迷惑,在PIE模式下时,日志消息为何没有显示在屏幕上。未看到日志消息的原因是,在当前开发阶段,编辑器仍在使用默认游戏模式。

  3. 退出键(Escape key) 或在关卡编辑器中点击 停止(Stop) 按钮,即可退出PIE模式。

将你的C++游戏模式类扩展到蓝图

  1. 首先,在"内容"文件夹中创建一个 蓝图(Blueprints) 文件夹。

    BlueprintsFolder.png

  2. 现在右键点击 FPSProjectGameModeBase 类(在 C++类(C++ Classes) > FPSProject 中),打开 C++类操作(C++ Class Actions) 菜单。

  3. 点击 基于FPSProjectGameModeBase创建蓝图类(Create Blueprint class based on FPSProjectGameModeBase) 打开 添加蓝图类(Add Blueprint Class) 对话框菜单。

    CreateDerivedBPClass.png

  4. 将你的新蓝图类命名为"BP_FPSProjectGameModeBase",然后选择蓝图文件夹,之后点击 创建蓝图类(Create Blueprint Class) 按钮。

    AddBPClass.png

  5. 到目前为止,你应该有一个新创建的 BP_FPSProjectGameModeBase 蓝图类,位于蓝图文件夹内。

    AddedBPClass.png

  6. 请确保在关闭蓝图编辑器之前保存你的 BP_FPSProjectGameModeBase 蓝图。

1.5 - 设置默认游戏模式

现在你已经成功地将新修改的游戏模式扩展到蓝图,在本步骤中,你需要设置你的项目,使用 BP_FPSProjectGameModeBase 作为默认 游戏模式

  1. 展开 编辑(Edit) 菜单,点击 项目设置(Project Settings)

  2. 项目设置(Project Settings) 选项卡左侧的 项目(Project) 标题下,点击 地图和模式(Maps & Modes)

  3. 展开 默认游戏模式(Default GameMode) 下拉菜单,选择 BP_FPSGameModeBase

    SettingFPSGameMode.png

  4. 关闭 项目设置(Project Settings) 菜单。

  5. 点击关卡编辑器工具栏中的 运行(Play) 按钮。"Hello World, this is FPSGameMode!"这句话应在视口左上角以黄色文本显示五秒钟。

    SectionResult.png

  6. 退出键(Escape key) 或在关卡编辑器中点击 停止(Stop) 按钮,即可退出编辑器内运行(PIE)模式。

1.6 第一节总结

FPSProjectGameModeBase.h

    // Epic Games, Inc版权所有。保留所有权利。

    #pragma once

    #include "CoreMinimal.h"
    #include "GameFramework/GameModeBase.h"
    #include "FPSProjectGameModeBase.generated.h"

    /**
     * 
     */
    UCLASS()
    class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase
    {
        GENERATED_BODY()

        virtual void StartPlay() override;

    };

FPSProjectGameModeBase.cpp

    // Epic Games, Inc版权所有。保留所有权利。

    #include "FPSProjectGameMode.h"

    void AFPSProjectGameMode::StartPlay()
    {
        Super::StartPlay();

        checkGEngine != nullptr);

          // 显示调试消息五秒。 
          // -1"键"值参数防止该消息被更新或刷新。
          GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameModeBase!"));

    }

恭喜!你已经学会了如何:

✓ 建立新项目
✓ 在Visual Studio中打开项目
✓ 向项目中添加日志消息
✓ 编译你的第一个C++类
✓ 设置默认游戏模式

在下一节中,我们将学习如何添加游戏角色,相信你已经准备好了!

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消