UE5 C++(一)— 入门介绍

news2024/9/26 3:31:18

这里写目录标题

  • 创建项目
  • UBT和UHT介绍
    • UnrealBuildTool(UBT)
    • UnrealHeadTool(UHT)
  • UEC++主要的头文件介绍
  • UEC++各个宏的作用

创建项目

创建一个名为DEMO的UE5项目工程:

在这里插入图片描述
创建完成之后:
在这里插入图片描述
在这里插入图片描述

这里我使用的是VSCODE开发C++,UE5使用Vscode开发可参考官方配置链接
这里会有两个项目工程:
在这里插入图片描述
DEMO:是我们创建的项目工程,用于自定义开发,包括一些资源,脚本等。
UE5:是用于UE开发的官方包,这个不用管。

我们开发写的C++脚本在这个目录下:
在这里插入图片描述

UBT和UHT介绍

UnrealBuildTool(UBT)

表示项目环境依赖信息,用到哪些模块(“Core”,“CoreUObject”,“Engine”,“InputCore”,这些是初始内置模块)。

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class DEMO : ModuleRules
{
	public DEMO(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		PublicDependencyModuleNames.AddRange(new string[]
		{
			"Core",
		 	"CoreUObject",
		 	"Engine",
		 	"InputCore"
		 });

		PrivateDependencyModuleNames.AddRange(new string[] { });

		// Uncomment if you are using Slate UI
		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

		// Uncomment if you are using online features
		// PrivateDependencyModuleNames.Add("OnlineSubsystem");

		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
	}
}

在这里插入图片描述

UnrealHeadTool(UHT)

用于收集头文件生成反射数据,头文件发生变化时,UE引擎会调用UHT生成新的反射数据。
在这里插入图片描述

UEC++主要的头文件介绍

在这里插入图片描述

UEC++各个宏的作用

  • GENERATED_BODY() :表示我们不直接使用父类的构造函数,如果要定义类中初始化操作,需要在.h头文件中声明构造函数,然后在.cpp文件中实现构造函数,它之后的成员是private的。
  • GENERATED_UCLASS_BODY() :表示使用父类的构造,如果在自定义类中做一些初始化操作,可以直接在.cpp文件中实现构造函数,不要在.h头文件中声明,这个宏会自动生成带有特定参数的构造函数,它之后的成员是public。
  • UCLASS():类声明宏。反射数据。类必须派生自UObject。
  • UPROPERTY :属性声明宏。UE在标准的C++基础上实现了一套反射系统(Reflection System),反射系统负责垃圾回收、引用更新,编辑器集成等一系列高级且有用的功能。而UPROPERTY的作用就是声明该属性在反射系统的行为
  • UFUNCTION:函数声明宏。反射系统的可识别的C++函数。
  • USTRUCT():结构体声明宏。反射系统的可识别的C++结构体。
  • UENUM():枚举声明宏。反射系统的可识别的C++枚举。

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

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

相关文章

计算机网络课程设计【Python实现】

一、网络聊天程序的设计与实现 1、实验目的 使用Socket编程,了解Socket通信的原理,会使用Socket进行简单的网络编程,并在此基础上编写聊天程序,运行服务器端和客户端,实现多个客户端通过服务器端进行通信。 2、总体设…

mybatis与oracle数据库jdbcType类型对应关系

之前都是百度上搜的,各种对应的都有,总觉得有问题,最后直接通过跑代码查看了一下对应关系,我用的oracle是19c。 常见的对应关系如下 oracle类型jdbcTypeVARCHAR2JdbcType.VARCHARNVARCHARJdbcType.NVARCHARCHARJdbcType.CHARCLOB…

阅读代码的记录

1-utils_metrics.py用在train.py中做指标衡量,现在想在推理(predict.py)的时候衡量一下指标 2-调研眼睛部位的单独分割。 https://blog.csdn.net/qq_40234695/article/details/88633094 衡量图像语义分割准确率主要有三种方法: …

CS106L2023 and CS106B 环境配置(详细教程)

1.问题: (1)CS106L 运行./setup.sh 脚本时出错 (windows 请下载git,在git bash 打开运行) (2)CS106B,QT构建 构建错误:一般构建错误,例如 Erro…

QT学习(0):qmake和编译

一、编译和链接 1.预处理 预处理是使用预处理器工具(系统在编译过程中调用的预先编写的程序)执行的 C 编译过程的第一步。C程序中所有以#符号开头的语句都会被预处理器处理,它将我们的程序文件转换为没有#语句的中间文件。 删除注释宏扩展…

【TC3xx】GETH

目录 一、RGMII 二、SMI接口 三、TC3xx MCAL 3.1 MCU 3.2 Port 3.3 DMA 3.4 中断配置 3.5 ETH 3.6 集成 一、RGMII TC3xx支持MII/RMII/RGMII三种以太网数据通信接口。其中RGMII经常用于MAC和MAC之间,或MAC与PHY之间的通信,RGMII的带宽可以是10M…

对于初学者来说,从哪些方面开始学习 Java 编程比较好?

对于初学者来说,从哪些方面开始学习 Java 编程比较好? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「Java的资料从专业入门到高级教程工具包」,点个关注,全…

vue2-安装elementUI时警告

警告内容&#xff1a;npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up …

机器学习可重复性危机下,创建复杂数据系统的挑战

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 数据科学系统已成为众多研究领域的关键性工具&#xff0c;其开发者群体呈现出多元化的背景特征。在过去十年中&#xff0c;尽管数据科学与机器学习的强…

OpenSSL的源码在哪里下载?

官方网站去下载&#xff0c;网址&#xff1a; https://www.openssl.org/source/ 比较老的版本的下载页面地址&#xff1a; https://www.openssl.org/source/old/ 由于某面板的OpenSSL模块的安装配置语句如下&#xff1a; --with-openssl/root/rpmbuild/BUILD/openssl-1.0.2u所…

TreeSelect 树型选择控件 编辑回显时所选的值与展开后的数据不对应 解决方案

一、业务场景&#xff1a; 最近在使用Vue框架和antd-vue组件库的时候&#xff0c;发现在做编辑回显时** TreeSelect 树型选择控件** 组件的选中的值能拿到&#xff0c;但是在下拉列表的回显位置有偏差。为了大家后面遇到和我一样的问题&#xff0c;给大家分享一下 二、bug信息…

商城免费搭建之java鸿鹄云商 java电子商务商城 Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

鸿鹄云商 SAAS云产品概述 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、My…

el-tooltip 修改全局的样式 (默认的太丑了)

默认的是黑色的框 话不多说,上代码 : .atooltip.el-tooltip__popper[x-placement^"top"] .popper__arrow {border-top-color: #fff;color: #999;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); } .atooltip.el-tooltip__popper[x-placement^"top"] .popp…

kotlin 基础概览

继承类/实现接口 继承类和实现接口都是用的 : &#xff0c;如果类中没有构造器 ( constructor )&#xff0c;需要在父类类名后面加上 () &#xff1a; class MainActivity : BaseActivity(), View.OnClickListener 空安全设计 Kotlin 中的类型分为「可空类型」和「不可空类型」…

嵌入式培训-数据结构-day23-线性表

线性表 线性表是包含若干数据元素的一个线性序列 记为&#xff1a; L(a0, ...... ai-1, ai, ai1 ...... an-1) L为表名&#xff0c;ai (0≤i≤n-1)为数据元素&#xff1b; n为表长,n>0 时&#xff0c;线性表L为非空表&#xff0c;否则为空表。 线性表L可用二元组形式描述…

冲压模具市场调研:2023年该行业发展现状及前景分析

汽车冲压件模具是汽车车身生产的重要工艺装备&#xff0c;是汽车换型的主要制约因素。汽车冲压件模具具有尺寸大、型面复杂、精度要求高等特点&#xff0c;属于技术密集型产品。 汽车冲压模具能快速精密地把材料直接加工成零件或半成品并通过焊接、铆接、拼装等工艺装配成零部件…

ChatGLM3-6B模型介绍及微调

文章目录 ChatGLM3-6B的强大特性更强大的基础模型更完整的功能支持更全面的开源序列 ChatGLM3-6B的部署basic版部署集成版部署 ChatGLM3-6B-base 微调ChatGLM3-6B-chat 微调多轮对话微调单轮对话微调 ChatGLM3-6B的强大特性 项目地址&#xff1a;https://github.com/THUDM/Cha…

基于node 安装express后端脚手架

1.首先创建文件件 2.在文件夹内打开终端 npm init 3.安装express: npm install -g express-generator注意的地方&#xff1a;这个时候安装特别慢,最后导致不成功 解决方法&#xff1a;npm config set registry http://registry.npm.taobao.org/ 4.依次执行 npm install -g ex…

shopify商城开发 引用谷歌字体库 fonts.google.com

引用谷歌字体库 https://fonts.google.com/ <link rel"preconnect" href"https://fonts.googleapis.com"> <link rel"preconnect" href"https://fonts.gstatic.com" crossorigin> <link href"https://fonts.goo…

详细了解云堡垒机的作用,提高企业数据信息安全

随着上云企业的不断增加&#xff0c;云上数据安全性成为企业面临的重要问题。为了保障企业的核心数据安全&#xff0c;越来越多的企业采购了云堡垒机来提升数据安全性。今天我们就来详细了解一下云堡垒机的作用&#xff0c;以及如何提高企业数据安全。 一、云堡垒机定义 云堡垒…