独立游戏《星尘异变》UE5 C++程序开发日志2——创建并编写一个C++类

在本篇日志中,我们将要用一个C++类来实现一个游戏内的物品,同时介绍UCLASS、USTRUCT、UPROPERTY的使用

一、创建一个C++类

我们在UE5的"内容侧滑菜单"中,在右侧空白中右键选择"新建C++类",然后可以选择一个想要的父类,这里我们要实现的是物品,所以选择Object类作为父类

在"类的类型"中选择公共,使其能够被其他模块调用

二、在.h文件中声明变量

在VS中打开我们刚刚生成的.h文件,"#pragma once"表示这个.h无论被包含多少次,都只会编译一次,"第三个头文件是必须最后一编译的头文件,所以如果要新添头文件,必须放在这个头文件前面。

#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Stardust.generated.h"

接着在下面可以看到一个"UCLASS"宏,表明接下来所声明的类将会暴露给UE5的反射系统。

"Blueprintable"表示这个c++类可以派生出蓝图类。

"GENERATED_BODY()"表示不继承父类的构造函数,要想继承父类的构造函数,需要替换为"GENERATED_UCLASS_BODY()"

UCLASS(Blueprintable)
class ASTROMUTATE_2_API UStardust : public UObject
{
	GENERATED_BODY()
public:
	
};

接下来我们创建一个结构体来表示物品的各个属性,在结构提前用USTRUCT宏将该结构体暴露给反射。

"BlueprintType"表示该结构体可以作为蓝图中的一种数据类型。

暴露给反射系统的结构体名称必须以F开头,在UE编辑器中该结构体的名称将不包含首字母F,同时须使用"GENERATED_USTRUCT_BODY"宏。

USTRUCT(BlueprintType)
struct FStardustTable 
{//星尘数据
	GENERATED_USTRUCT_BODY()
	FStardustTable();
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "StardustStruct")
	FString StardustName;//名称
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "StardustStruct")
	EStardustFormEnum StardustForm;//形态
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "StardustStruct")
	int StardustStackLimit;//堆叠上限
//为增加可读性,这里只展示了物品的部分属性
};

接下来我们先声明一个构造函数,用于在物品生成时初始化属性。

要声明暴露给反射系统的变量,需要使用"UPROPERTY"宏。

"EditAnywhere"表示该变量在编辑器中的类默认设置和实例化细节面板中都可以被编辑,"Edit"也可以替换成"Visible",表示该变量只读。

"BlueprintReadWrite"表示该变量在蓝图中可以获取和设置,可将"ReadWrite"替换为"ReadOnly"表示该变量在蓝图中尽可获取。

"Category"可以设置该变量所处的目录。

第一个声明的变量为FString,该数据类型与stl中的string类似,为可修改的字符串。

第二个声明的变量是一个枚举,枚举的定义同样需要先使用"UENUM"宏将其暴露给反射。

"BlueprintType"表示该枚举可以作为蓝图中的数据类型。

"UMETA"中可以定义枚举内容在蓝图中显示的名称。

UENUM(BlueprintType)
enum class EStardustFormEnum//形态
{
	Empty UMETA(DisplayName = "Empty"),
	Type1 UMETA(DisplayName = "Type1"),
	Type2 UMETA(DisplayName = "Type2"),
	Type3 UMETA(DisplayName = "Type3"),
};

未完待续

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

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

相关文章

基础二分学习笔记

模板 : 个人倾向第一种 ; 整数二分 : 最大化查找 : 可行区域在左侧 : 查找最后一个<q的数的下标 : int find(int q){// 查找最后一个 < q 的下标 int l 0 , r n 1 ;while(l 1 < r){int mid l r >> 1 ;if(a[mid]<q) l mid ;else r mid ;}return…

【设计模式 01】单例模式

单例模式&#xff0c;是一种创建型设计模式&#xff0c;他的核心思想是保证一个类只有一个实例&#xff08;即&#xff0c;在整个应用程序中&#xff0c;只存在该类的一个实例对象&#xff0c;而不是创建多个相同类型的对象&#xff09;&#xff0c;并提供一个全局访问点来访问…

深入了解 JavaScript 混淆加密和环境检测

JavaScript混淆加密是一种通过修改代码结构和命名约定来增加代码的复杂性&#xff0c;使其难以被理解和逆向工程的技术。在这篇文章中&#xff0c;我们将深入探讨JS混淆加密的一些逻辑&#xff0c;并介绍如何通过环境检测来提高代码的安全性。我们将使用案例代码演示这些概念。…

微信小程序开发学习笔记《18》uni-app框架-网络请求与轮播图

微信小程序开发学习笔记《18》uni-app框架-网络请求 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、下载网络请求包 这个包是以前黑马程序员老师写的一个包&#xff0c;跟着课程学习&#x…

LSTM 长短期记忆递归神经网络

1、神经网络简介 1.1 神经网络起源 人工神经网络&#xff08;Aritificial Neural Networks, ANN&#xff09;是一种仿生的网络结构&#xff0c;起源于对人类大脑的研究。人工神经网络&#xff08;Aritificial Neural Networks&#xff09;也常被简称为神经网络&#xff08;Ne…

考研复试指南

1. 记住&#xff0c;复试的本质不是考试&#xff0c;而是一场自我展示。 考研复试并非简单的知识考察&#xff0c;更是一场展示自我能力和潜力的机会。除了学科知识&#xff0c;考官更关注你的综合素质、学术兴趣和未来发展规划。因此&#xff0c;要保持自信&#xff0c;用更全…

重读 Java 设计模式: 探索经典之道与 Spring 框架的设计

写在开头 记得大学刚毕业那会儿&#xff0c;想学点东西&#xff0c;于是拿出了《Head First 设计模式》这本书&#xff0c;就开始了阅读&#xff0c;我曾对这些模式感到晦涩难懂。然而&#xff0c;随着工作岁月的增长&#xff0c;我逐渐领悟到设计模式的价值&#xff0c;尤其是…

使用 Haproxy 搭建Web群集

Haproxy是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;如LVS 和Nginx。相比较而言&#xff0c;LVS.牲能最好&#xff0e;但是搭建相对复杂:Nginx的upstream模块支持群集功能&#xff0e;但是对群集节点健康检查功能不强&#xff0c;性能没有…

jupyter 一键快捷启动方法研究

1.效果 首先打开dat 文件&#xff0c;同意赋予管理员 输入序号1 成功启动 2.Bat代码 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&e…

【网站项目】123网上书城系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Matlab 多项式插值(曲线拟合)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 由于对曲线拟合有些兴趣,这里就找了一些资料从最基本的方法来看一下曲线拟合的效果: 二、实现代码 % **********

后端开发技术面试指南

工作10多年&#xff0c;每年都会帮组里面试一些新同学校招社招的都有&#xff0c;下面我就从一个面试官的视角来给大家拆解一下如何淡然应对后端开发技术面试。 1.一面多为电话面试 (1)问七问八 ①简历要注重内容&#xff0c;形式上不丑没有错别字即可。之前收到过一个工作5…

代码随想录算法训练营第七天

● 自己看到题目的第一想法 第454题.四数相加II 方法&#xff1a; 方法一&#xff1a; 暴力法 思路&#xff1a; 注意&#xff1a; 代码&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<i…

SpringBlade CVE-2022-27360 export-user SQL 注入漏洞分析

漏洞描述 SpringBlade是一个基于Spring Cloud和Spring Boot的开发框架&#xff0c;旨在简化和加速微服务架构的开发过程。它提供了一系列开箱即用的功能和组件&#xff0c;帮助开发人员快速构建高效可靠的微服务应用。该产品/api/blade-user/export-user接口存在SQL注入。 漏…

探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

目录 前言一、 单机模式二、 伪分布式模式三、 完全分布式模式&#xff08;重点&#xff09;3.1 准备工作3.2 配置集群3.2.1 配置core-site.xml 文件3.2.2 配置hdfs-site.xml 文件3.2.3 配置yarn-site.xml 文件3.2.4 配置mapred-site.xml 文件 3.3 启动集群3.3.1 配置workers3.…

神经网络系列---卷积

文章目录 卷积神经网络卷积转置卷积 卷积核和反卷积的三种实现方式卷积的次数计算 卷积神经网络 在神经网络的卷积层中&#xff0c;向下取整&#xff08;Floor&#xff09;是一种常用的策略&#xff0c;特别是在处理输出尺寸不是整数的情况时。当你计算出卷积层输出的尺寸&…

【 10X summary report】怎么看?详细解读笔记

报告内容 在开始正式的分析之前&#xff0c;需要查看在对齐和计数过程中生成的任何总结统计信息。下图是由Cell Ranger工具创建的10X总结报告&#xff0c;在从10X scRNA-seq实验生成计数矩阵时会生成。 The left half of the report describes sequencing and mapping statist…

李沐动手学习深度学习——3.1练习

字写的有点丑不要介意 由于公式推导烦的要死&#xff0c;所以手写形式&#xff0c;欢迎进行讨论&#xff0c;因为我也不知道对错

2024最新AI系统ChatGPT网站源码, AI绘画系统

一、前言说明 R5Ai创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GP…

lua调用C++函数

第一步搭建lua的环境. win10 lua环境搭建-CSDN博客 我使用的环境是win10vs2015lua54 先来个最简单的lua调用C函数, 无参数无返回值的 第一步:定义C函数. int CTest(lua_State* L) // 返回值是固定的int类型,返回0表示没有返回参数,返回1表示有一个返回参数 {std::cout &l…