阿赵UE引擎C++编程学习笔记——HelloWorld

  大家好,我是阿赵。
  从这一篇开始学习虚幻引擎的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里面编译。
在这里插入图片描述

  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值