目的
本节旨在展示如何建立第一人称射击游戏项目。
目标
完成教程的这一节后,你将能够:
建立新项目
设置编辑器启动地图
在Visual Studio中打开项目
为项目添加日志消息
编译你的第一个C++类
设置默认游戏模式
步骤
1.1 - 建立项目
1.2 - 在Visual Studio中打开项目
1.3 - 添加日志消息
1.4 - 编译项目
1.5 - 设置默认游戏模式
1.6 - 第一节总结
1.1 - 建立项目
在这一步中,我们将使用虚幻引擎项目浏览器为我们的第一人称射击游戏(FPS)创建一个起始点。
通过Epic启动器打开 虚幻引擎,然后选择创建新项目。
点击 游戏(Games) 新项目类别,然后点击 下一步(Next)。
选择 空白模板(Blank template),然后点击 下一步(Next)。
将项目类型更改为 C++(而非 蓝图(Blueprint)),确保选中 无初学者内容(No Starter Content)。
命名项目后,继续并点击 创建项目(Create Project) 按钮。
创建项目后,该项目会自动在虚幻编辑器中打开。此时点击 运行(Play),便可进入编辑器内运行(PIE)模式。
按Esc键或在关卡编辑器中点击 停止(Stop),即可退出PIE模式。
你已完成对关卡的探索,现在转到 内容浏览器(Content Browser)(通常在屏幕底部附近),在 内容(Content) 文件夹下创建一个 地图(Maps) 文件夹(选择内容文件夹,在其中任意位置点击右键,选择 文件夹(Folder) > 新建文件夹(New Folder))。
在 文件(File) 菜单中,选择 将当前内容另存为(Save Current as...),然后点击地图文件夹。将新地图命名为"FPSMap",然后点击 保存(Save)。
从 编辑(Edit) 菜单中,点击 项目设置(Project Settings)。
在 项目设置(Project Settings) 选项卡左侧的 项目(Project) 标题下,点击 地图和模式(Maps & Modes)。
展开 编辑器启动地图(Editor Startup Map) 下拉菜单,选择 FPSMap。
最后,关闭 项目设置(Project Settings) 菜单,保存项目,然后继续下一步骤。
1.2 - 在Visual Studio中打开项目
在上一步中建立 基础代码(Basic Code) 项目后,虚幻引擎为你创建了一个 游戏模式(Game Mode)。游戏模式定义游戏规则和获胜条件。游戏模式还会设置一些默认类,用于某些基本游戏框架类型,包括Pawn、PlayerController和HUD等。本节中,你将使用编辑器将你的项目作为解决方案在Visual Studio中打开,以便查看项目的游戏模式类。
展开 文件(File) 菜单,选择 打开Visual Studio(Open Visual Studio),便可在Visual Studio中打开C++代码。
在Visual Studio启动项目之后,你应该会在Visual Studio的 解决方案资源管理器 中看到 .cpp 和 .h 文件。
如果示例图中的Visual Studio与你的Visual Studio看起来略有不同,无需紧张,我们只是使用了"深色主题"。要启用深色主题,转到:工具(Tools)>选项(Options)>环境(Environment)>常规(General)>颜色主题(Color Theme)。
展开 源(Source),然后展开 FPSProject 以查看你的新游戏的主要文件。
打开FPSProjectGameModeBase.cpp。文件内容应如下所示:
// Epic Games, Inc版权所有。保留所有权利。 #include "FPSProjectGameModeBase.h"
现在打开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() };
现在你已经在Visual Studio中打开了C++项目,可以开始向项目中添加代码了。
1.3 - 添加日志消息
向项目中添加代码的一个不错的起点是向FPSGameMode添加一条日志消息。日志消息对于在开发期间验证和调试代码非常有用。在这一步中,你将使用日志消息来验证自己确实在使用FPSGameMode而非虚幻引擎提供的默认游戏模式。
FPSProjectGameMode头文件
在 解决方案资源管理器 中,展开 FPSProject > 源(Source) > FPSProject。
双击
FPSProjectGameModeBase.h
打开 FPSGameMode 类的头文件。类声明应该如下所示:
UCLASS() class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase { GENERATED_BODY() };
在
AFPSProjectGameMode
构造函数声明下方添加以下函数声明:virtual void StartPlay() override;
此函数声明允许你重载StartPlay,以便游戏启动时在屏幕上打印日志消息。
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; };
在Visual Studio中保存你的头文件。
FPSProjectGameMode CPP文件
在 解决方案资源管理器 中,定位到
FPSProjectGameModeBase.cpp
(FPSProject >源(Source)> FPSProject)。双击
FPSProjectGameModeBase.cpp
打开 FPSGameModeBase 类的实现文件。现在将以下代码行添加到该文件中:
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!"),采用黄色文本,显示五秒钟。
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!"));
在Visual Studio中保存CPP文件。
1.4 - 编译项目
是时候编译项目了,这样你就能看到新代码在游戏中的表现。
回到编辑器,点击 编译(Compile) 按钮编译代码。
继续并点击 运行(Play) 按钮,进入在编辑器内运行(PIE)模式。
你可能有点迷惑,在PIE模式下时,日志消息为何没有显示在屏幕上。未看到日志消息的原因是,在当前开发阶段,编辑器仍在使用默认游戏模式。
按 退出键(Escape key) 或在关卡编辑器中点击 停止(Stop) 按钮,即可退出PIE模式。
将你的C++游戏模式类扩展到蓝图
首先,在"内容"文件夹中创建一个 蓝图(Blueprints) 文件夹。
现在右键点击 FPSProjectGameModeBase 类(在 C++类(C++ Classes) > FPSProject 中),打开 C++类操作(C++ Class Actions) 菜单。
点击 基于FPSProjectGameModeBase创建蓝图类(Create Blueprint class based on FPSProjectGameModeBase) 打开 添加蓝图类(Add Blueprint Class) 对话框菜单。
将你的新蓝图类命名为"BP_FPSProjectGameModeBase",然后选择蓝图文件夹,之后点击 创建蓝图类(Create Blueprint Class) 按钮。
到目前为止,你应该有一个新创建的
BP_FPSProjectGameModeBase
蓝图类,位于蓝图文件夹内。请确保在关闭蓝图编辑器之前保存你的
BP_FPSProjectGameModeBase
蓝图。
1.5 - 设置默认游戏模式
现在你已经成功地将新修改的游戏模式扩展到蓝图,在本步骤中,你需要设置你的项目,使用 BP_FPSProjectGameModeBase
作为默认 游戏模式。
展开 编辑(Edit) 菜单,点击 项目设置(Project Settings)。
在 项目设置(Project Settings) 选项卡左侧的 项目(Project) 标题下,点击 地图和模式(Maps & Modes)。
展开 默认游戏模式(Default GameMode) 下拉菜单,选择 BP_FPSGameModeBase。
关闭 项目设置(Project Settings) 菜单。
点击关卡编辑器工具栏中的 运行(Play) 按钮。"Hello World, this is FPSGameMode!"这句话应在视口左上角以黄色文本显示五秒钟。
按 退出键(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++类
✓ 设置默认游戏模式
在下一节中,我们将学习如何添加游戏角色,相信你已经准备好了!