虚幻学习笔记9—C++代码变量与蓝图的通信

news2024/11/23 7:14:58

一、前言

        C++代码中通过关键字“UPROPERTY”来讲所需要的变量、方法或枚举反射暴露给蓝图,实现C++和蓝图之间的通信。所有实现的变量都在一个名为“MyPawn1”类中,同时提到的蓝图是根据这个类创建的。同时这个Pawn类为场景中的默认Pawa类。

图1.1.1

        文中提到的实例化面板也即根据上图1.1.1创建的蓝图”BP_MyPawn1“实例化后的面板,当运行程序后会默认创建一个实例,同时如果自动讲”BP_MyPawn1“蓝图拖动到场景中也会创建一个实例。如图1.1.2所示为运行后的两个蓝图实例。

图1.1.2

二、实现

2.1、变量的VisibleDefaultsOnly

        表示只在蓝图的类默认设置可见,比如在C++中定义一个该变量,那么这个变量只会在如图

//这个注释也会被反射到面板上,当鼠标悬浮面板该变量时会显示当前注释
//通过反射将属性暴露给蓝图的细节面板中,来实现C++和蓝图的通信
UPROPERTY(VisibleDefaultsOnly)//VisibleDefaultsOnly表示仅在类默认设置可见
	int32 VisibleDefaultsOnlyInt;

2.1.1所示的蓝图类默认设置面板中出现,同时所有的注释也会被反射到蓝图的这个变量中。在其

图2.1.1

任何面板中都不会显示。

2.2、变量的VisibleInstanceOnly

           表示只在蓝图的实例化细节面板中可见,如定义C++的变量如下

	UPROPERTY(VisibleInstanceOnly)//仅仅在实例化细节面板可见
		FString VisibleInstanceString;

        那么这边变量只会在实例化面板中显示,如图2.2.1所示,只可见不能编辑。

图2.2.1

2.3、变量的VisibleAnywhere

              顾名思义是在类默认设置和实例化细节面板都可见。  

	UPROPERTY(VisibleAnywhere)//类默认设置和实例化细节面板都可见
		FVector VisibleAnywhereVector;

2.4、变量的EditDefaultsOnly

   仅在类默认设置里可以编辑,可以编辑当然类默认设置里也可见,在实例化面板中依然不可见。

	//仅在类默认设置里面可以编辑
	UPROPERTY(EditDefaultsOnly)
	int32 EditDefaultsOnlyInt;

2.5、变量的EditInstanceOnly

        仅仅在实例化面板中可见可编辑,在类默认设置中不可见。

	//仅在实例化面板中可以编辑
	UPROPERTY(EditInstanceOnly)
	FString EditInstanceOnlyString;

2.6、变量的EditAnywhere

        在任何面板中可见可编辑。

	//在类默认设置和实例化细节面板都可以编辑
	UPROPERTY(EditAnywhere)
	FVector EditAnywhereVec;

2.7、变量的BlueprintReadWrite

       在蓝图中可读,如下定义的代码,可以在各个面板中编辑,但是蓝图调用的时候只读,如图2.7.1所示

	//在各个面板上可编辑,但是在蓝图中仅可读,
	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	int32 BlueprintReadOnlyInt;
图2.7.1

当然,前面的”EidtAnywhere“也可以不要,这样在任何面板都没有这个变量了。

2.8、变量的Category

        将变量归类到目录中,如图2.8.1所示为该变量归类到MyIntValue中后的效果。

	// 在蓝图中使用变量,将变量设置成目标目录
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyIntValue")
	int32 valueInt;
图2.8.1

2.9、变量的Meta

        可以将变量的一些属性进行自定义,如名字、控制和提示等。

1、DisplayName设置变量别名:如下定义的代码,如果出现乱码需要将CPP文件保存为UniCode

	//DisplayName别名,可以设置成中文
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "我是别名"))
	int32 myValue3;

格式的文件再编译。

2、EditCondition设置变量条件控制

//条件可控制编辑,在面板上当控制变量为true时才可以对目标变量进行编辑
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "条件控制编辑变量"))
bool isControl;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "isControl"))
float targetController;

如图2.9.1所示为需要先设置”条件控制编辑变量“为True时才可以编辑变量

图2.9.1

3、ToolTip显示提示的内容

	//解释说明变量,和注释类似,当有了这个后,注释部分会消失,只显示TooltTip的内容
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "当isControl=true时"))
	bool isTrue;

如图2.9.2所示,显示的内容为设置的”ToolTip“内设置的内容

图2.9.2

三、总结

3.1、在变量中的注释也会被显示到蓝图中,在鼠标悬浮在蓝图的变量或方法时会显示当前的注释,知道使用ToolTip修改了显示的内容。

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

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

相关文章

L1-039:古风排版

题目描述 中国的古人写文字&#xff0c;是从右向左竖向排版的。本题就请你编写程序&#xff0c;把一段文字按古风排版。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;<100&#xff09;&#xff0c;是每一列的字符数。第二行给出一个长度不超过1000的非空字…

量化交易与人工智能:技术的交叉引发金融市场的变革

量化交易&#xff08;Quantitative Trading&#xff09;是利用数学模型和统计分析来进行投资决策的一种交易策略。而人工智能技术的快速发展为量化交易带来了全新的机遇和挑战。本文将探讨人工智能在量化交易领域的应用及其对金融市场的变革。 在传统的投资交易中&#xff0c;决…

Java连接数据库的各种细节错误(细节篇)

目录 前后端联调&#xff08;传输文件&#xff09; ClassNotFoundException: SQLException: SQL语法错误: 数据库连接问题: 驱动问题: 资源泄露: 并发问题: 超时问题: 其他库冲突: 配置问题: 网络问题: SSL/TLS问题: 数据库权限问题: 驱动不兼容: 其他未知错误…

C语言学习day02:数据结构、变量和常量、标识符

数据类型&#xff1a; 常量和变量以及宏文件注意、占位符拓展&#xff1a; #include<stdio.h> 宏定义常量 没有和; #define PI 3.14159圆的面积 spi * r * r 圆的周长 lpi * 2 * r int main() {常量piconst数据类型 常量名值const float pi 3.14159;在定义局部变量可以…

Kyligence 荣登甲子光年 2023 AIGC 技术应用领域最具商业潜力榜

近日&#xff0c;「2023甲子引力年终盛典致追风赶月的你」在北京成功举办。作为中国科技产业智库&#xff0c;「甲子光年」在年终盛典现场颁布多项榜单&#xff0c;旨在表彰2023年度在科技产业各细分赛道上拥有核心技术实力&#xff0c;并在商业化上取得卓越成绩的优秀科技企业…

亚马逊云科技:大语言模型的前沿探索与应用革新

导言&#xff1a; 近年来&#xff0c;随着科技的飞速发展&#xff0c;大语言模型成为人工智能领域的一颗璀璨明珠。在这个信息爆炸的时代&#xff0c;大语言模型以其强大的自学习能力和广泛的应用领域引起了广泛关注。作为亚马逊云科技的前沿技术之一&#xff0c;本文将深入探…

Python房价分析(三)支持向量机SVM分类模型

目录 1 数据预处理 1.1 房价数据介绍 1.2 数据预处理 2 SVM模型 2.1 模型概述 2.2 核函数选择 2.3 建模步骤 2.4 参数搜索过程 3模型评估 3.1 模型评估结果 3.2 混淆矩阵 3.3 绘制房价类别三分类的ROC曲线和AUC数值 3.4 模型比较 总结 往期精彩内容&#xff1a; …

进程线程。

1> 使用有名管道&#xff0c;完成两个进程的相互通信 #include <myhead.h> int main(int argc, const char *argv[]) {if(argc!5){puts("输入错误请重新输入");return -1;}pid_t pid-1;pidfork();if(pid>0){int wfd-1;if((wfdopen(argv[1],O_WRONLY))-1…

PPT插件-好用的插件-插入媒体-大珩助手

批量媒体 包含批量视频、批量音频、批量图片&#xff0c;可实现从光标所在的位置开始&#xff0c;每页插入一个视频、一个音频、一张图片&#xff0c;且图片和视频的尺寸与当前幻灯片尺寸一致 插入文本 包含黑字无底、白字红底、白字黛底、白字绿底、白字蓝底预设一键文本&am…

springboot房屋房产房管家中介服务系统+java-ssm

随着房地产市场的快速发展&#xff0c;中国经济飞速发展&#xff0c;社会城市化建设的脚步不断加快&#xff0c;社会城市化的规模也在不断扩大&#xff0c;房屋中介逐渐成为当今社会生活的重要部分&#xff0c;房屋中介的市场竞争也日益加剧&#xff0c;房屋中介的管理与服务成…

linux redis-cluster ipv6方式

配置文件&#xff0c;具体字段的含义&#xff0c;可以参考其他文档。 1.单个文件的配置信息 redis_36380.conf requirepass Paas_2024port 36380tcp-backlog 511timeout 0tcp-keepalive 300daemonize yessupervised nopidfile /data/paas/apps/aicache-redis/redis_36380.p…

IOS添加三方库之后项目编译没问题安装不上

code:-402653103 将新添加的framework embe&sign 改为do not embed

深度学习基本概念

1.全连接层 全连接层就是该层的所有节点与输入节点全部相连&#xff0c;如图所 示。假设输入节点为X1&#xff0c; X 2&#xff0c; X 3&#xff0c;输出节点为 Y 1&#xff0c; Y 2&#xff0c; Y 3&#xff0c; Y 4。令 矩阵 W 代表全连接层的权重&#xff0c; W 12也就代表 …

6U CPCI测控系列可定制型测控机箱

CPCI测控系列 XM-3646 内置300WH锂智能电池超强续航能力 可选配外置电池无限续航 符合CPCI总线标准规范 内置6U 4槽CPCI背板 内置CPCI-9370控制器 可内置数采、航空总线、通讯接口等功能模块 全铝镁合金加固紧凑型设计 特殊防撞包角及硅胶把手设计 15.6高清显示屏1920x…

nodejs微信小程序+python+PHP沧州地区空气质量数据分析系统-计算机毕业设计推荐 django

本系统不仅主要实现了注册登录&#xff0c;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;城市区域管理&#xff0c;空气状况管理&#xff0c;空气质量管理&#xff0c;系统管理&#xff0c;数据爬取&#xff0c;大屏分析等功能&#xff0c;通过这些功能基本可…

vue3 echarts 各省地图展示

效果&#xff1a; 1.在src下新建utils文件夹添加各省地图的json文件&#xff08;下载各省地图的网址 DataV.GeoAtlas地理小工具系列&#xff09; 2.安装echarts npm install echarts 3.在项目文件中中引入json <template><div class"back"><div id…

项目经理和产品经理该如何选择?

最近很多人咨询“项目经理跟产品经理该怎么选&#xff0c;我更适合哪个&#xff1f;”“项目经理跟产品经理哪个更有钱途 ”“项目经理转产品经理好转吗”等等&#xff0c;今天就一次性说清楚项目经理跟产品经理有什么区别&#xff0c;应该怎么选择。 不想看长篇大论的&#x…

处理货物数据

主题 对xlsx文件进行清洗 第一步 将g2到y2的标题复制到g4和y4 安装操作库 pip install openpyxl下载失败&#xff0c;更换为阿里源 pip install library -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com下载仍然失败 再次换源 pip instal…

最新鸿蒙HarmonyOS4.0开发登陆的界面2

登陆功能 代码如下&#xff1a; import router from ohos.router; Entry Component struct Index {State message: string XXAPP登陆State userName: string ;State password: string ;build() {Row() {Column({space:50}) {Image($r(app.media.icon)).width(200).interpol…

《使用ThinkPHP6开发项目》 - 登录接口一

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 《使用ThinkPHP6开发项目》 - 项目使用多应用开发-CSDN博客 《使用ThinkPHP6开发项目》 - 创建应用-CSDN博客 《使用ThinkPHP6开发项目》 - 创建控制器-CSD…