UE5的StructUtils

3

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2023-2-9 10:40:45 | 显示全部楼层
噢噢,那好像不能像普通结构体一样直接在蓝图创建然后添加其属性是吧
回复

举报 使用道具

1

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-2-9 10:41:21 | 显示全部楼层
FInstancedStruct 不行, FInstancedPropertyBag 可以,就是用来做这事情的,上面文章里有写具体用法
回复

举报 使用道具

2

主题

8

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-2-9 10:41:41 | 显示全部楼层
牛的,仙贝!!刚刚改了一下我的作品,现在DataTable能像XML一样用了,感谢分享~请教一下TArray<FInstancedStruct>会是像union一样只取最大的作为每个元素的大小吗?我对它和FInstancedStructArray的区别还是有点困惑,除了编辑器要使用外,还有什么情况最好使用后者呢?
回复

举报 使用道具

2

主题

5

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-2-9 10:42:01 | 显示全部楼层
C#中有个Harmony三方库利用IL能在外部增删改dll中的代码,请问一下前辈知道UE或者说是C++有这方面的东西吗?
回复

举报 使用道具

2

主题

4

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-2-9 10:42:41 | 显示全部楼层
不清楚了,UE5的C++支持Hotreload,编辑器里好像是按F12,不过本质上是换了个新的dll。但蓝图肯定能动态改
回复

举报 使用道具

0

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-2-9 10:43:24 | 显示全部楼层
文中有图画了内存布局,这里和union完全不同,TArray<FInstancedStruct>每个元素都是16字节(两个指针),实际内存是动态分配的,就像std::any一样。FInstancedStructArray内存是按实际大小分配的,每个元素类型不同,就不一样大,所以无法基于总大小除以元素大小定位到每个元素的大小,这容器的内部保存了每个元素的offset,所以可以随机访问
回复

举报 使用道具

3

主题

8

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-2-9 10:43:56 | 显示全部楼层
FInstancedStructArray的内存分布我是懂的,你这解释一下两者的区别我完全懂了。那么请教一下弄出FInstancedStructArray的意义是什么呢?TArray的形式也可以A[Index].Get<Type>()来随机访问吧。
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表