大家好,我是阿赵。
从这一篇开始学习虚幻引擎的C++编程。
学习所有编程好像都应该从HelloWorld开始,所以我这里也不例外。不过为了能打印出HelloWorld,需要做的事情还不少。不过到了能打印出HelloWorld的时候,我感觉学习的过程就成功了一小半了。
一、 建立C++工程。
之前学习蓝图的时候,建立工程是建立蓝图的,这里我创建野怪项目,叫做MyDemo,选择的是C++类型的项目。
创建完项目之后,可以在工具里面找到新建C++类、刷新Visual Studio项目和打开Visual Studio三个选项。
如果之前已经安装好了Visual Studio,那么选择打开Visual Studio选项,就应该能在Visual Studio打开这个MyDemo工程的C++项目了。
二、 安装Visual Studio 2022
需要注意的是,如果是用UE5版本的虚幻引擎,那么需要用Visual Studio 2022版本来配合使用。
在安装的vs2022的时候,记得把UE相关的选项都勾选上。
三、 C++项目
在正确安装好VS2022之后,可以打开C++项目了,还是刚才UE引擎里面的工具——>打开Visual Studio,这时候VS2022启动,然后就会打开项目。
来看看这个项目的目录结构:
1、 Engine部分
这部分是UE5自带的代码,不能修改,但能查看和断点。
2、 Games部分
这部分是我们这个项目里面的代码,我们之后将要在这里面写C++代码
3、 Programs部分
这部分包括了各种工具类,比如我们编译C++代码用的UnrealBuildTool。
4、其他比如还有Rules和Visualizers,这些暂时不了解。
然后其他就是VS的常规操作了,可选择调试器,并运行调试器进行代码断点。需要注意的是,C++的代码如果修改了,是需要先编译才能运行的。其实在用Unity引擎的时候,编写C#也是同样要编译的,只是一般人都会默认保留了引擎自动编译的选项。所以在Unity引擎修改了C#代码再回到Unity编辑器的时候,编辑器右下角会转动一个进度,那个其实就是在编译C#代码。
UE使用C++,记得修改完C++代码之后,需要编译,才能看到效果。
也可以通过生成,编译C++代码。
也可以UE编辑器里面的编译按钮来编译C++:
在创建项目的第一次编译,似乎只能是在VS里面先编译一次,不然会弹出提示:
这时候关闭了UE编辑器,只保留VS2022打开着C++的项目,然后在VS端编译:
编译后再打开UE的编辑器,然后再点一次编译器里面的编译按钮:
这一次,发现编译成功了。
四、 开始编写HelloWorld
选择工具——>新建C++类
UE引擎会弹出选择父类的窗口:
由于我们现在需要在启动的时候进行打印,所以新建一个继承GameModeBase的类:
然后指定这个新的类的命名和保存路径,我这里就用默认的MyGameModeBase命名,然后点击创建类:
创建了类之后,回去UE编辑器先编译一次。每天第一次运行UE编译都会很慢,但编译过第一次之后,就会变快一点。
这时候,我们需要指定刚才新建的MyGameModeBase为默认的游戏模式:
这样指定的意思是,假如当前的关卡没有指定特殊的GameMode,那么游戏运行的时候,就会执行我们指定的这个MyGameModeBase类。
五、 打印HelloWorld
找到MyGameModeBase.h,增加一个StartPlay的定义:
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "MyGameModeBase.generated.h"
/**
*
*/
UCLASS()
class MYDEMO_API AMyGameModeBase : public AGameModeBase
{
GENERATED_BODY()
public:
//定义StartPlay声明周期的方法
virtual void StartPlay();
};
然后找到MyGameModeBase.cpp,增加一个StartPlay生命周期方法的实现:
#include "MyGameModeBase.h"
void AMyGameModeBase::StartPlay()
{
UE_LOG(LogTemp, Display, TEXT("Hello World!"));
}
这时候回到UE编辑器,编译C++,然后运行游戏,就会看到打印输出了:
六、 可能遇到的问题:
1、 缺少VS项目文件
如果VS项目文件不完整,可以找到C++项目文件里面的uproject文件,然后右键——Generate Visual Studio project files
2、 提示UnrealBuildTool找不到
在编译的时候,如果提示
UnrealBuildTool.dll not found in
"…\Engine\Binaries\DotNET\UnrealBuildTo
这就需要自己生成一下UnrealBuildTool。
找到UE安装目录里面的UnrealBuildTool的C#项目,打开,然后构建一下就行:
3、 在Visual Studio里面编译失败
我之前说过,我尽量是使用UE引擎里面的编译按钮来进行C++代码的编译。但如果想在VS里面编译C++,却又有报错,可以参考一下,要么把UE编辑器关掉再编译,要么把“启用实时代码编写”的选项去掉,然后再在VS里面编译。