UE FastArray的分享
2023-06-10 15:18 作者:skycontact | 我要投稿
使用FastArray
第一步:声明一个结构体继承自 FFastArraySerializerItem
第二步:声明一个Array结构体继承自 FFastArraySerializer;并且使用TArry来包含第一步声明的结构体
第三步:声明结构体特征
第四步:使用的关键函数
增加或者修改元素后调用函数FFastArraySerializer::MarkItemDirty();
删除元素后调用函数FFastArraySerializer::MarkArrayDirty();
例:
第五步:可以实现一些辅助函数
元素添加:PostReplicatedAdd
元素修改:PostReplicatedChange
元素删除:PreReplicatedRemove
这三个函数只会在连接到服务器的客户端才会被被调用,服务器以及单机均不会被调用。
如果一个元素是被删除,之后又添加了新的,不一定会调PreReplicatedRemove()以及PostReplicatedAdd(),有可能只有一个PostReplicatedChange()。
FastArray数据结构
FFastArraySerializerItem
FFastArraySerializer
FastArray的原理
使用的关键函数解析
FFastArraySerializer::MarkItemDirty()
FFastArraySerializer::MarkArrayDirty()
例:空Array,添加元素后调用MarkItemDirty
初次序列化的流程
第一步:构造数据
例子
例:数组有A、B和C三个元素
例:
第二步:序列化
第三步:执行函数FNetSerializeCB::NetDeltaSerializeForFastArray()
反序列化的流程
第一步:做一个ItemMap
第二步:执行函数FNetSerializeCB::NetDeltaSerializeForFastArray()
第三步:反序列化
非初次序列化的流程
第一步:判断是否需要进行序列化
第二步:构造数据
例:
第三步:序列化