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

news2024/11/24 17:20:55

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1647695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用DxTex.exe工具处理DDS图片

一.DxTex.exe DDS文件:基于Direct3D引擎的纹理图片格式。 DxTex.exe:基于Direct3D引擎开发的DDS文件处理工具,文件分辨率修改,文件minmap修改。 DxTex.exe路径:Utilities\bin\x64\DxTex.exe 二.修改分辨率 Format-Resize Texture 三.修改mipmap Format-Change Surface Format

专业的保密网文件导入导出系统,让文件流转行为更可控安全

军工单位因其涉及国防安全和军事机密,对保密工作有极高的要求,通常会采取严格的网络隔离措施来保护敏感信息和提高网络安全性。常见的方式是通过物理隔离将网络彻底分隔开来,比如保密网和非保密网。网络隔离后,仍有数据交换的需求…

VALSE 2024年度进展评述内容分享-世界模型增强下的自动驾驶

2024年视觉与学习青年学者研讨会(VALSE 2024)于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道,方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

【kali换源之后签名无效,报错处理】

#一、问题:报错信息# 错误:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease 错误:2 http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling InRelease 错误:3 http://dl.google.com/linux/chrome/deb stable InRelease 错误:4 http://mirrors.aliyu…

LeetCode509:斐波那契数(使用动态规划)

题目描述 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n > 1…

Web3 ETF软件系统的主要功能

下面是Web3 ETF系统软件的主要功能,这些功能共同构成了Web3 ETF系统软件的核心,使其能够有效地为投资者提供Web3技术相关的投资机会,同时确保合规性、安全性和透明度。北京木奇移动软件有限公司,专业的软件外包开发公司&#xff0…

Java性能优化(一):ArrayList还是LinkedList?

引言 集合作为一种存储数据的容器,是我们日常开发中使用最频繁的对象类型之一。JDK为开发者提供了一系列的集合类型,这些集合类型使用不同的数据结构来实现。因此,不同的集合类型,使用场景也不同。 很多同学在面试的时候&#x…

3个电脑录制视频技巧,新手也能轻松上手

在当今信息化时代,电脑录制视频已经成为人们日常工作和学习中的一项重要技能。无论是录制在线会议、教程讲解还是游戏直播,一款合适的录屏软件都至关重要。本文将介绍三种常见的电脑录制视频方法,为广大用户提供详细的操作步骤,满…

Python中的分布式爬虫系统Scrapy与分布式任务队列的结合

随着互联网的不断发展,网络爬虫在数据采集和信息挖掘中发挥着重要作用。然而,单机爬虫往往难以应对大规模数据抓取的需求,因此,构建分布式爬虫系统成为了一种必然选择。本文将介绍如何利用 Python 中的 Scrapy 框架和分布式任务队…

VALSE 2024主旨报告内容解析:以深度学习框架为牵引促进自主AI生态发展

2024年视觉与学习青年学者研讨会(VALSE 2024)于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道,方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

AngusTester安装Mock服务

一、介绍 Mock服务(AngusMockService) 提供了一个虚拟环境,让您能够模拟不同的接口响应、状态码和数据,快速生成并模拟您所依赖的API,使开发和测试先行,以实现更快的开发和更全面的测试,更早地交付稳定的产品或应用。…

Amazon Bedrock 托管 Llama 3 8B70B

Amazon Bedrock 托管 Llama 3 8B&70B,先来体验:(*实验环境账号有效期为1天,到期自动关停,请注意重要数据保护) https://dev.amazoncloud.cn/experience/cloudlab?id65fd86c7ca2a0d291be26068&visi…

AI烟雾监测识别摄像机:智能化安全防范的新利器

随着现代社会的不断发展,人们对于安全问题的关注日益增加,尤其是在日常生活和工作中,对火灾等意外事件的预防成为了一项重要任务。为了更好地应对火灾风险,近年来,AI烟雾监测识别摄像机应运而生,成为智能化…

[笔试训练](十四)

目录 040:乒乓球框 041:组队竞赛 042:删除最大数字的相邻分数 040:乒乓球框 乒乓球筐__牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 哈希简单查询 #include <iostream> #include <string> using namespace std; int main() {string s1, s2;w…

【rar技巧】如何制作rar分卷压缩?

一个rar压缩包体积太大了&#xff0c;想要将压缩包分为三个&#xff0c;该如何做到&#xff1f;其实很简单&#xff0c;方法就在我们经常使用的WinRAR当中。 我们先将压缩包内的文件解压出来&#xff0c;然后查看一下&#xff0c;然后打开WinRAR软件&#xff0c;找到文件&…

拼多多标准推广怎么玩

拼多多标准推广的玩法主要包括以下方面&#xff1a; 拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&…

一起深度学习

CIFAR-10 卷积神经网络 下载数据集构建网络运行测试 下载数据集 batchsz 32cifar_train datasets.CIFAR10(data,trainTrue,transformtorchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),torchvision.transforms.ToTensor()]),downloadTrue)cifar_train …

嵌入式软件天花板是不是不高?

前几天&#xff0c;有个做贴片厂的朋友和我们说&#xff0c;他有个客户&#xff0c;和我们一样&#xff0c;也是技术出身&#xff0c;然后自己做产品&#xff0c;找渠道卖。 当初的方式也很low&#xff0c;也就是某宝&#xff0c;某巴上推。 后面有家外贸公司找到他合作&#x…

如何利用IPIDEA代理IP优化数据采集效率?

一、 前言二、 IPIDEA介绍三、体验步骤四、实战训练五、结语 一、 前言 在全球化与信息化交织的当代社会&#xff0c;数据已成为驱动商业智慧与技术革新的核心引擎。网络&#xff0c;作为信息汇聚与交流的枢纽&#xff0c;不仅是人们获取知识的窗口&#xff0c;更是商业活动与技…

创建SpringBoot3.X项目(使用IDEA2022创建SpringBoot3.X项目)

创建项目 1.点击New Project&#xff08;新建项目&#xff09; 项目基本信息 项目依赖 修改项目基本信息 1.修改配置文件类型&#xff08;按需调整&#xff09; 一版创建完成的项目都是application.properties配置文件&#xff0c;如果喜欢使用yml的可以直接修改配置文件后…