欢迎光临散文网 会员登陆 & 注册

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()

第三步:反序列化

非初次序列化的流程

第一步:判断是否需要进行序列化

第二步:构造数据

例:

第三步:序列化


第四步:执行函数FNetSerializeCB::NetDeltaSerializeForFastArray()


UE FastArray的分享的评论 (共 条)

分享到微博请遵守国家法律