1 - 建立项目

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

22-FPS-settingup-section-result.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. 命名项目后,继续并点击 创建项目(Create Project) 按钮。

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

    03-FPS-settingup-play-button.png

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

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

    04-FPS-settingup-stop-button.png

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

    05-FPS-settingup-maps-folder.png

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

    06-FPS-settingup-save-level-as.png

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

    07-FPS-settingup-save-level-settings.png

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

    08-FPS-settingup-open-project-settings.png

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

    09-FPS-settingup-editor-default-map.png

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

  13. 最后,关闭 项目设置(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++代码。

    10-FPS-settingup-tools-menu-open-VS.png

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

    11-FPS-settingup-VS-solution-explorer.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 类的头文件。

    13-FPS-settingup-header-file.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.cppFPSProject >源(Source)> FPSProject)。

    14-FPS-settingup-cpp-file.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) 按钮编译代码。

    Since you started developing your project as a C++ project, you are able to compile your C++ code directly from Unreal Editor. Click for full image.

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

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

    16-FPS-settingup-PIE-game-mode.png

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

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

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

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

    17-FPS-settingup-blueprints-folder.png

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

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

    18-FPS-settingup-create-derived-BP-class.png

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

    19-FPS-settingup-add-BP-class.png

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

    20-FPS-settingup-created-BP-class.png

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

1.5 - 设置默认游戏模式

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

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

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

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

    21-FPS-settingup-setting-default-gamemode.png

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

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

    22-FPS-settingup-section-result.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++类
✓ 设置默认游戏模式

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

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