第 2 天:创建你的第一个 UE5 C++ 项目!

🎯 目标:

掌握 UE5 C++ 项目的创建流程,了解代码结构,并成功运行第一个 C++ 类!

1️⃣ 创建 UE5 C++ 项目

在 UE5 中,C++ 项目可以与蓝图(Blueprint)结合使用,让游戏逻辑更灵活。今天我们将创建一个 全新的 C++ 项目,并探索其基本结构。

🔹 新建 C++ 项目步骤

  1. 打开 Unreal Engine 5(启动 Epic Games Launcher → 选择 UE5)。
  2. 点击“创建新项目”,在项目类型中选择 游戏(Game)。
  3. 选择“空项目(Blank)”,确保是 C++ 项目(不要选蓝图)。
  4. 启用 Starter Content(包含基础素材),方便后续使用。
  5. 设定项目名称(如 MyFirstCppGame),选择保存路径,点击 创建(Create)。
  6. 等待 UE5 加载,默认会自动打开 Visual Studio,准备进行 C++ 开发! 🎮
    在这里插入图片描述

✅ 成功创建 C++ 项目后,你的开发环境已经准备就绪! 🚀

2️⃣ UE5 C++ 项目结构解析

创建项目后,我们的工程目录会包含多个关键文件夹:

文件夹作用
Source/存放所有 C++ 代码
Source/MyFirstCppGame/游戏的主 C++ 代码文件夹
Source/MyFirstCppGame/MyFirstCppGame.Build.cs项目编译设置
Config/配置文件(游戏启动参数等)
Content/资源文件(材质、模型、声音等)
Binaries/编译后的二进制文件
Intermediate/临时文件(无需手动修改)
Saved/项目保存的临时数据

其中,Source 文件夹最重要,是我们编写 C++ 代码的地方。

3️⃣ 创建并运行你的第一个 C++ 类

🔹 创建 C++ 类

  1. 在 UE5 中,点击“工具” → “新建 C++ 类”。
  2. 选择 Actor 作为基类(它是 UE5 世界中的基本对象)。
  3. 命名为 MyFirstActor,点击 创建并添加到项目。
  4. 等待 UE5 自动生成 C++ 代码并打开 Visual Studio。

4️⃣ 修改 C++ 代码

打开 MyFirstActor.cpp 并编辑 BeginPlay() 方法,让它在游戏启动时打印一条消息:

📌 MyFirstActor.h(头文件)

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyFirstActor.generated.h"

UCLASS()
class MYFIRSTCPPGAME_API AMyFirstActor : public AActor
{
    GENERATED_BODY()

public:	
    AMyFirstActor();

protected:
    virtual void BeginPlay() override;
};

📌 MyFirstActor.cpp(实现文件)

#include "MyFirstActor.h"
#include "Engine/Engine.h"

AMyFirstActor::AMyFirstActor()
{
    PrimaryActorTick.bCanEverTick = true;
}

void AMyFirstActor::BeginPlay()
{
    Super::BeginPlay();

    // 在控制台和输出日志中打印 "Hello Unreal Engine C++!"
    UE_LOG(LogTemp, Warning, TEXT("Hello Unreal Engine C++!"));
}

5️⃣ 编译 & 运行

🔹 编译 C++ 代码

  1. 返回 UE5,点击右下角的 编译按钮
    在这里插入图片描述
  2. 等待编译完成,如果没有报错,则说明 C++ 代码已正确编译!

🔹 在场景中使用 C++ Actor
4. 回到 UE5 编辑器,打开 “世界大纲(World Outliner)” 窗口。
5. 找到 MyFirstActor 并拖入场景。
6. 点击 “播放(Play)”,然后打开左下角的 输出日志(Output Log),可以看到:

LogTemp: Warning: Hello Unreal Engine C++!

✅ 你成功创建并运行了你的第一个 UE5 C++ 类!🎉

6️⃣ 常见问题 & 解决方案

问题解决方案
项目创建失败确保 Visual Studio 2022 已安装,并包含 C++ 开发组件
编译失败在 UE5 中 点击“工具”→“刷新 Visual Studio 项目”
C++ 代码修改后无效重新编译(Ctrl + Shift + B),并重启 UE5
UE_LOG 没有输出确保打开输出日志窗口(Window → Developer Tools → Output Log)

🎯 总结:今天你学到了什么?

✅ 创建 UE5 C++ 项目
✅ 了解项目结构(Source、Config、Content 等)
✅ 编写并运行你的第一个 C++ Actor
✅ 使用 UE_LOG 在日志中输出信息

👏 恭喜你完成 UE5 C++ 项目创建 任务!🎮 明天我们将深入 Actor 类的原理与用法,带你掌握 UE5 C++ 的核心开发模式!🚀

📌 记得收藏专栏,每天进步一点,最终独立开发自己的 UE5 游戏!🔥

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 从入门到精通:从工作模式到集群部署实战(二)

接上篇:《RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)》 链接 文章目录 4.安装RabbitMQ Messaging Topology Operator 裸金属环境部署RabbitMQ部署单实例部署集群 4.安装RabbitMQ Messaging Topology Operator 使用 cer…

vs code 使用教程

一、定义 多行注释vs 找不到上层文件路径选择 或 创建python 虚拟环境git 远程克隆及推送vs code 文件路径vs 使用tensorboard 二、使用 学习网站:https://learn.microsoft.com/zh-cn/visualstudio/python/?viewvs-2022性能分析:https://learn.micros…

【Elasticsearch】terms聚合误差问题

Elasticsearch中的聚合查询在某些情况下确实可能存在误差,尤其是在处理分布式数据和大量唯一值时。这种误差主要来源于以下几个方面: 1.分片数据的局部性 Elasticsearch的索引通常被分成多个分片,每个分片独立地计算聚合结果。由于数据在分…

BUU22 [护网杯 2018]easy_tornado 1

打开题目以后出现三个文件,查看源代码,突破口在于这三个文件都有特殊的格式 python的tornado漏洞 Tornado 是一个用 Python 编写的 Web 框架(和flask一样,只不过flask是轻量级的,而tornado可以处理高流量&#xff09…

QT修仙之路1-1--遇见QT

文章目录 遇见QT二、QT概述2.1 定义与功能2.2 跨平台特性2.3 优点汇总 三、软件安装四、QT工具介绍(重要)4.1 Assistant4.2 Designer4.3 uic.exe4.4 moc.exe4.5 rcc.exe4.6 qmake4.7 QTcreater 五、QT工程项目解析(作业)5.1 配置文件(.pro)5.2 头文件&am…

寒假2.5

题解 web:[网鼎杯 2020 朱雀组]phpweb 打开网址,一直在刷新,并有一段警告 翻译一下 查看源码 每隔五秒钟将会提交一次form1,index.php用post方式提交了两个参数func和p,func的值为date,p的值为Y-m-d h:i:s a 执行fu…

计算机中数值表示:原码、反码、补码与移码

1 前言 计算机科学中,数字的表示方式至关重要,因为计算机内部只能识别处理二进制数据。为了在计算机中实现对整数的表示,提出了多种数值编码方式,其中最常用的是原码、反码、补码和移码。 2 原码 2.1 原码的定义 原码(Signed …

硬件实现I2C常用寄存器简单介绍

引言 在深入探讨I2C外设的具体案例之前,理解其核心寄存器的配置至关重要。这些寄存器不仅控制着I2C模块的基本操作模式,如数据传输速率和地址识别,还负责管理更复杂的通信需求,例如中断处理、DMA交互及错误检测与恢复。接下来的内…

分析用户请求K8S里ingress-nginx提供的ingress流量路径

前言 本文是个人的小小见解,欢迎大佬指出我文章的问题,一起讨论进步~ 我个人的疑问点 进入的流量是如何自动判断进入iptables的四表?k8s nodeport模式的原理? 一 本机环境介绍 节点名节点IPK8S版本CNI插件Master192.168.44.1…

linux中,软硬链接的作用和使用

一、软硬链接的作用 软硬链接,是大家所熟系的内容了。链接就是方便人使用电脑上访问文件、方便进程访问文件的工具。比如软连接大家都有见过,在安装某款软件的时候要不要添加快捷方式。在windows系统上,我们右键点击文件的时候按‘s’就能创建…

kalman滤波器C++设计仿真实例第三篇

1. 仿真场景 水面上有条船在做匀速直线航行,航行过程中由于风和浪的影响,会有些随机的干扰,也就是会有些随机的加速度作用在船身上,这个随机加速度的均方差大约是0.1,也就是说方差是0.01。船上搭载GPS设备,…

ubuntu20.04+RTX4060Ti大模型环境安装

装显卡驱动 这里是重点,因为我是跑深度学习的,要用CUDA,所以必须得装官方的驱动,Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/,选择类型,最新版本下载。 挨个运行&#…

[c语言日寄]浮点数在内存中的储存

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

Yageo国巨的RC系列0402封装1%电阻库来了

工作使用Cadence多年,很多时候麻烦的就是整理BOM,因为设计原理图的时候图省事,可能只修改value值和封装。 但是厂家,规格型号,物料描述等属性需要在最后的时候一行一行的修改,繁琐又容易出错,过…

【文档智能】Qwen2.5-VL在版式分析和表格识别上的实际评测效果

qwen开年开源了Qwen2.5-VL系列权重模型,笔者观察到相较于传统的多模态系列,增加了文档理解功能。笔者以文档智能中两个比较重要的任务版式分析和表格识别,笔者直接测试下Qwen2.5-VL-72B的效果。 版式分析 case1 case2 这个case没有输出bbox…

【计算机组成原理】1_绪论

chap1 绪论 1. 国产芯片现状 MIPS阵营:龙芯X86阵营(常见于桌面和服务器):兆芯(VIA),海光(AMD)ARM阵营(常见于移动嵌入式、手机平板等)&#xff…

解锁反序列化漏洞:从原理到防护的安全指南

目录 前言 一、什么是反序列化 二、反序列化漏洞原理 三、反序列化漏洞的危害 (一)任意代码执行 (二)权限提升 (三)数据泄露与篡改 四、常见的反序列化漏洞场景 (一)PHP 反…

openGauss 3.0 数据库在线实训课程1:学习数据库状态查看

openGauss数据库状态查看 前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 学习从操作系统层面和使用openGauss工具查看数据库的状态、版本和数据文件目录。 课程作业 gs_ctl是openGauss提…

[含文档+PPT+源码等]精品基于Python实现的django个性化健康餐计划订制系统

软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js(2.X)、css3 开发工具:pycharm、Visual Studio Code、HbuildX 数据库:MySQL 5.7.26&am…

单机伪分布Hadoop详细配置

目录 1. 引言2. 配置单机Hadoop2.1 下载并解压JDK1.8、Hadoop3.3.62.2 配置环境变量2.3 验证JDK、Hadoop配置 3. 伪分布Hadoop3.1 配置ssh免密码登录3.2 配置伪分布Hadoop3.2.1 修改hadoop-env.sh3.2.2 修改core-site.xml3.2.3 修改hdfs-site.xml3.2.4 修改yarn-site.xml3.2.5 …