UE4_UStruct 遍历
一个结构体中存在一个Val变量,Val变量的类型是FVector4,想从c++层面去遍历获得Val的值
上图是很早之前的一个Property
继承关系图。
当然,在4.25UProperty
被FProperty
夺笋。
好处呢,见下:
没有继承UObject后的开销
提高了引擎启动时间
提高GC处理时间明显
内存使用量的减少
打包后包体体积减少
自定义结构体的遍历
USTRUCT(BlueprintType, meta=(HiddenByDefault))
struct FPostProcessSettings
{PRAGMA_ENABLE_DEPRECATION_WARNINGSGENERATED_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)
UE4_UStruct 遍历相关推荐
- Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)
Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...
- 二叉树的前序、中序、后序非递归遍历 python实现
前言 python中二叉树的定义: class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None ...
- 判断某数组是不是二叉树的前序遍历序列 python递归
code class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) <= 0 ...
- python实现二叉树的重建2 之由中序遍历和后序遍历重建
前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...
- python实现二叉树的重建1 之由前序遍历和中序遍历重建
前言 此题是关于树的面试题目的常见题型,题目的含义很清晰,这个就不用多说了 解法 关于这道题的解法有很多不同的样式,通用的解法是这样的: 假如现在我们有如下两个遍历的情况 preorder: [1, ...
- 通过前序遍历和中序遍历构建二叉树 python实现
前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...
- 关于二叉树的层次遍历的花样(c++实现)
花样变形1::二叉树层次遍历但是分层打印 分析:与普通打印多了一个分层打印,其实只要在在层次遍历中多设置一个标记变量即可 代码如下: //二叉树的层次遍历 void levelTravel(BTNod ...
- nvGRAPH三角形计数和遍历示例
nvGRAPH三角形计数和遍历示例 #include " stdlib.h" #include" inttypes.h" #include" stdi ...
- 2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach
目录 遍历 foreach 使用类型推断简化函数定义 使用下划线来简化函数定义 遍历 foreach 之前,学习过了使用for表达式来遍历集合.我们接下来将学习scala的函数式编程,使用fore ...
最新文章
- ubuntu下nginx+php5的部署
- ubuntu查看python版本-Ubuntu18.04下python版本完美切换的解决方法
- Loss Function , Cost Function and Kernel Function in ML(To be continued)
- java用递归的方式写n_java-使用递归将其元素加起来为n的子集的列表
- java调用一个方法后怎么继续执行不等待该方法的返回_Java面试题大全2020版(二)...
- Django模板系统 运算
- 晨哥真有料丨盘点追女生的作死行为!
- 小强的HTML5移动开发之路(14)——Video标签详解
- python文件和目录访问File and Directory Access
- 不到 20 人的互联网公司该去吗?
- iconfont 彩色图标的使用
- oracle10g dblink优化,dblink如果很慢可以用这种方式优化
- 什么是Python?Python简介
- openCV绘制简单Sierpinski(分形)图形
- 签约沈腾、贾玲,苏宁拼购打造下沉市场“新引擎”
- 计算机职业素养200字,职业素养个人总结200字
- 敏捷软件开发(2)--- 设计原则
- FastRule: Efficient Flow Entry Updates for TCAM-based OpenFlow Switches(一)
- MOS管基本认识(快速入门)
- 20种常用的运放典型电路
热门文章
- 【图解数据结构与算法】数据结构与算法知识点整理 Data Structures and Algorithms
- 开源网络管理软件-RANCID【新任帮主】
- 虚拟电厂可视化大屏,深挖痛点精准减碳
- CSS学习笔记——搭建京东购物车网页
- 计算机病毒是一种特殊的计算机程序段,计算机病毒是一种特殊的计算机程序。( )——青夏教育精英家教网——...
- 2015年上网行为管理技术发展趋势分析
- Google Earth Engine(GEE)——快速建立一个10km的格网
- 【Iriun Webcam】
- 应聘经历:网易笔试归来
- 《Linux命令行与shell脚本编程大全》第三章