UE4_UStruct 遍历

2023-11-05

一个结构体中存在一个Val变量,Val变量的类型是FVector4,想从c++层面去遍历获得Val的值

在这里插入图片描述

上图是很早之前的一个Property继承关系图。

当然,在4.25UPropertyFProperty夺笋。

好处呢,见下:

没有继承UObject后的开销
提高了引擎启动时间
提高GC处理时间明显
内存使用量的减少
打包后包体体积减少

自定义结构体的遍历

USTRUCT(BlueprintType, meta=(HiddenByDefault))
struct FPostProcessSettings
{
	PRAGMA_ENABLE_DEPRECATION_WARNINGS
	GENERATED_USTRUCT_BODY()
	...
}

FPostProcessSettings是引擎提供的后处理的可配置参数的结构体变量

如果想修改

在这里插入图片描述

// this 类继承自 APostProcessVolume
FPostProcessSettings* PostProcessSettings_P = &(this->Settings);

获取Contrast

FStructProperty* StructProperty=FindFieldChecked<FStructProperty>
(PostProcessSettings_P->StaticStruct(),FName("ColorContrast"));

如果采取直接遍历StructProperty的如下方式,读取的值为0

	if (StructProperty)
	{
		for (TFieldIterator<FProperty> PropIt(StructProperty->GetClass()); PropIt; ++PropIt)
		{
			FProperty* Property = *PropIt;
			FFloatProperty* tempProperty = CastFieldChecked<FFloatProperty>(Property);
			float temp1 = tempProperty->GetPropertyValue_InContainer(StructProperty);
			UE_LOG(LogTemp,Warning,TEXT("%.2f"),temp1);
		}
	}

FProperty 没有FVector4Property

FVecyot4的定义如下
在这里插入图片描述
本质上仍然是一个结构体

遍历方式如下

if (StructProperty)
	{
		FVector4* v = StructProperty->ContainerPtrToValuePtr<FVector4>(PostProcessSettings_P);
		v->X  =2 ;
		v->Y= 2;
		v->Z= 1.2f;
		UE_LOG(LogTemp,Warning,TEXT("%.2f,%.2f,%.2f,%.2f"),v->X,v->Y,v->Z,v->W);
	}

参看
UE4 从UProperty到FProperty
Unreal Property System (Reflection)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE4_UStruct 遍历 的相关文章

  • Qt+SDL播放YUV视频文件

    播放一个yuv420p格式的文件 yuv的格式与rgb格式的存储方式不同 yuv数据是 yyyyyyyy uu vv 的存储 rgb是rgba rgba rgba 存储 同样一帧图像 yuv420会比rgb数据更小 读取时就要注意数据存储格
  • UE4 跑酷游戏-得分机制

    得分机制 1 这次我们要做的是得分 根据人物跑过的地板来得取分数 首先进入我们的第三人称游戏模式里面 创建一些变量 2 退出第三人称游戏模式后 进入主地板蓝图后 在销毁地板之前写读取人物跑i过地板块数进行得分
  • 虚幻C++ http请求

    直接上代码 Fill out your copyright notice in the Description page of Project Settings pragma once include CoreMinimal h inclu
  • 解决UE4启动出现UE4Editor.exe-无法找到dll入口的弹窗

    UE4编辑器启动 一开始遇到的问题如下 上网找问题得到的解答都是在cmd下利用regsvr32 exe注册该dll到注册表 但是也提示报错 上网搜了一下 得知原因是生成该dll的源码没有实现 DllRegisterServer和DllUne
  • ue4 用武器切割物体.

    我们这里使用UE4自带的第三人称的模板开始我们的游戏 切割物体嘛 所以这里我们需要一把武器和人物的武器攻击动画 武器我们可以从官方商城的免费资源获得 人物攻击动画我们可以从下面这个网站获得 这里面有各种人物动画和模型 完全免费 业界良心啊
  • UE4、5不让贴花影响Mesh

    如果不想让贴花影响某些在移动中的物体穿过它也会受到影响 例如人 车之类的 可以把mesh里的Receives Decals选项去掉
  • UE4学习日记——蓝图中的各种颜色代表什么

    节点类型颜色 白色 执行线 蓝色 调用的函数或事件 暗蓝色 结构体 草绿色 流程切换 绿色 纯函数 通常用于获取什么 青色 试着对象转换 紫色 函数定义 灰色 宏 红色 事件的定义 土黄色 时间轴 数据类型颜色 白色线条 执行线 程序的执行
  • UE4_Python编写,Pycharm智能提示API

    1 按照教程配置环境 在对应的目录下会有一个unreal py 的文件 把它粘贴到对应的Python的项目目录 2 因为Pycharm 的py 文件 默认支持的智能提示是 the file size 10 5mb exceeds confi
  • 专题详解-5G接入控制(1)

    相关文章会在公众号同步更新 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避免通过二手 甚至多手的资料 以讹传讹误导网友 最近工作中遇到了一些5G专网接入限制的问题 以前没仔细研究 借着解决这
  • 修改UE4缓存路径,免得太多占用c盘空间

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 修改默认缓存路径 打开Epic Games 自定义缓存位置 前言 在安装好了UE4之后 UE4引擎会默认生成缓存路径 C Users ASUS AppData Local Unre
  • UE-从鼠标出进行射线检测

    第一种方式 Convert Mouse Location To World Space 将鼠标屏幕2D位置转换为场景空间3D位置和方向 将鼠标位置从2D转换成3D 第二种方式 Deprohiect Screen to World 将给定的2
  • 11月8日 改良射线,蓝图 UE4斯坦福 学习笔记

    修改射线类型 更改了昨天的射线类型 void USInteractionComponent PrimaryInteract 射线 FHitResult FHit 碰撞体 FCollisionObjectQueryParams ObjectQ
  • UE4 实现用鼠标旋转场景中的物体

    本文实现的是用在UE4 中用鼠标旋转场景中的物体 点击到物体时开始物体旋转功能 移动鼠标物体跟着旋转相应的角度 松开鼠标左键物体停止旋转 下面介绍实现此功能的蓝图逻辑 由于比较简单就不一一介绍了 直接贴上蓝图代码 如有问题欢迎交流
  • UE44如何使用Geometry(BSP)笔刷,快速创建游戏原型?

    游戏原型搭建 如何快速搭建场景 一 好处1 防止同时也放大了对应的网格 如果像unity里面一样 R放大缩小以后 网格也会对应拉伸 失真 导致了材质会被拉伸或者缩小 1 选择Geometry 在BrushSetting里面 将X Y Z对应
  • UE4_积分相同排名显示问题

    找了一下ue4 rank 函数相关 没找到合适的 自己简单写了个 解决积分相同时名次要一样 之后顺位排序 中国式排名 蓝图实现 c 原理一样 1 2 3 4 5
  • UE4/UE5 动画控制

    工程下载 https mbd pub o bread ZJ2cm5pu 蓝图控制sequence播放 倒播动画 设置开启鼠标指针 开启鼠标事件 在场景中进行过场动画制作 设置控制事件
  • 11月11日 自定义Events,将自定义Events分配给UI,给UI添加动画 UE4斯坦福 学习笔记

    自定义Events 在AttributeComponent的 h头文件上加上代码 自定义Event DECLARE DYNAMIC MULTICAST DELEGATE FourParams FOnHealthChanged AActor
  • UE4安卓打包配置(大陆内网络整顿后,Android打包时AndroidWorks无法使用的解决方法)

    由于国内进行了网络整顿 UE4官网上用CodeWorksforAndroid下载安卓打包工具配置的方法已经不能使用了 开了VPN也链接不上 这使得用UE4打包配置安卓游戏变得非常麻烦 博主捣鼓了好几天才打包成功 深感在中国学习UE4的艰难与
  • UE4 VR WidgetInteraction 局域网设定

    无论用什么 我们要先确定是什么 鲁迅 下面是关于WidgetInteraction的官方定义 控件交互组件执行光线投射 确定它是否命中世界场景中的控件组件 如命中 可设置规则确定与其交互的方式 交互通过模拟定义的按键来执行 例如一个按钮可通
  • 第十七篇:Unity/UE4如何实现Cave空间(一)

    首先什么叫CAVE空间 CAVE是围绕着观察者具有多个图像画面的虚拟现实系统 多个投影面组成一个虚拟空间 理论上CAVE是基于计算机图形学把高分辨率的立体投影技术和三维计算机图形技术 音响技术 传感器技术等综合在一起 产生一个供多人使用的完

随机推荐

  • 期权、期货及其他衍生产品 第一章读书笔记

    期权 期货及其他衍生产品 第一章读书笔记 介绍 什么是衍生产品 衍生产品的特点 有哪些交易所场所 交易所市场 一些著名的交易所市场 场外市场 我国的场外市场 远期合约 远期合约可以用来对冲外汇风险 远期合约的收益 远期价格和即期价格 期货合
  • lua学习笔记—table

    1 什么是table table是lua的一种数据结构 可以用来创建数组或映射 lua中的table使用的是关联型数组 关联数组的key值可以是除过nil之外任意类型的值 table的大小是不固定的 可以自己进行扩容 2 如何构造table
  • iOS autorelease 示例研究

    iOS autorelease是Objective C中的一个自动内存管理机制 它通过在对象创建时将其添加到自动释放池中 在池被释放时自动释放对象 从而减少手动内存管理的工作量 本文将介绍如何使用autorelease机制来管理内存 aut
  • 跨部门的高效沟通与协作

    在企业管理当中 沟通是一个非常重要的技能 它运用我们管理当中每一个细节 首先要做好沟通和协作 我们需要有一个很好的思维模式 这个就像盖房子一样 它是地基 是一个房子的地基部分 没有一个正确的思维模式 那我们其后的技巧都不会有一个很好的效果
  • 大数据框架总结

    hdfs 1 写数据流程 2 HDFS读数据流程1 3 HDFS副本节点选择 4 HDFS nn 2nn 镜像文件以及编辑日志的工作机制 注意此类机制都是先更新编辑日志 再更新内存文件block元数据 checkpoint触发默认条件是一小
  • 谈谈虚幻引擎4的Global Illumination

    本届GDC 2013 Epic再次展示了UE4的最新demo 效果惊艳毋庸置疑 不过今天我们只谈UE4的光照利器 SVOGI SVOGI全称Sparse Voxel Octree Global Illumination 由Epic的Andr
  • DES的加密与解密(C语言实现)——大三密码学实验

    目录 DES的描述 Feistel体制 密钥扩展函数 F函数 总流程 代码 get函数的构建 yihuo函数的构建 fuck函数的构建 left move函数的构建 exchange函数的构建 erzhuanshi函数的构建 shizhua
  • 利用Vulnhub复现漏洞 - GoAhead 远程命令执行漏洞(CVE-2017-17562)

    GoAhead 远程命令执行漏洞 CVE 2017 17562 Vulnhub官方复现教程 漏洞原理 复现漏洞 启动环境 漏洞复现 动态链接库源码 编译so文件 发送payload Vulnhub官方复现教程 https vulhub or
  • EasyExcel导出模板实现下拉选(解决下拉超过50个限制)

    学习地址 https d9bp4nr5ye feishu cn wiki O3obweIbgi2Rk1ksXJncpClTnAf B站视频 https www bilibili com video BV1H34y1T7Lm 先来看看最终实现
  • MySQL基本操作语句

    目录 基本的操作数据库的语句 操作库的基本SQL语句 针对表的基本SQL语句 针对记录的基本SQL语句 扩展知识 select 标准用法 基本的操作数据库的语句 show databases gt gt gt gt 查看所有的数据库 sho
  • vue3 nvm配置多个版本node

    在实际开发中 我们可能会负责多个项目 有的项目是vue2版本开发的 有的是vue3版本开发的 如果我们电脑全局的node版本是低版本的 那么高版本的vue3项目在安装依赖时就会报错 反之亦然 我们可以使用nvm来安装多个版本的node 并使
  • Vue table不分页 动态加载数据(类似手机端滑动到底端后再去获取数据)

    最近接到一个需求 pc端中的table 数据不做分页 而是做成滚动条形式 但是table中的数据还是一次显示50条 等这50条滑动到底部后 再去加载50条 有加载效果 以此类推 直到数据全部展示 值得注意的是 我的需求是 第一次请求数据就将
  • 在线UTF-8/GBK互相转换工具

    在线UTF 8 GBK互相转换工具 https encode guiboweb com
  • shell执行Oracle SQL并捕获异常案例分析

    一 shell脚本 实现功能读取指定配置文件中的Oracle数据库连接 清空传入变量表的数据 以及清除数据之后的结果进行捕获分析 bin bash Created Date 2022 12 16 Author Last Modified 2
  • db2错误代码

    DB2错误代码 SQL返回码信息对照 用COBOL链接DB2时 出现DB2错误信息时 如果你不懂代码是什么意思 可以用这份资料查找 当然你也可以直接在db2的命令行下输入 db2 SQL30081N 系统会给出一些提示信息 sqlcode
  • LiDAR SLAM的比较

    在自动驾驶领域 定位是很重要的一环 为了建立更有鲁棒性 精确的定位 在实际自动驾驶车上往往都会使用激光雷达 激光雷达相比于摄像头 对光照变化不敏感 适合白天和黑夜 绝大多数路况 激光雷达获得的距离信息精度很高 获取的feature很稳定 当
  • Spring 异常处理的三种方式 整理

    异常处理方式一 ExceptionHandler 异常处理方式二 实现HandlerExceptionResolver接口 异常处理方式三 ControllerAdvice ExceptionHandler 三种方式比较说明 强烈推荐各位看
  • 小程序接入微信客服

    wx openCustomerServiceChat Object object 微信开放文档 微信小程序打开微信客服 接口文档 企业微信开发者中心 1 网页搜索 微信客服 扫码登录 根据提示 填写信息 微信客服 2 在 微信客服 中进入企
  • 项目打包报不能在脱机状态下访问**资源

    项目场景 springboot项目 使用maven进行打包操作 问题描述 Failed to execute goal org springframework boot spring boot maven plugin 2 5 0 repa
  • UE4_UStruct 遍历

    一个结构体中存在一个Val变量 Val变量的类型是FVector4 想从c 层面去遍历获得Val的值 上图是很早之前的一个Property继承关系图 当然 在4 25UProperty被FProperty夺笋 好处呢 见下 没有继承UObj