Replication Graph 4.27 变化内容
UReplicationGraph::PostServerReplicateStats
在本帧执行同步后会执行此函数
1 | virtual void PostServerReplicateStats(const FFrameReplicationStats& Stats) {}; |
其中参数
FFrameReplicationStats 定义
1 | /** Collects basic stats on the replicated actors */ |
主要记录了当次同步的一些信息,可利用这些信息重写函数后来做一些操作
FActorRepListRefView 重构
不再是一个包含 FActorRepList 的类型,而是由一个 TArray
1 | TArray<FActorRepListType> RepList; |
来直接储存 Actor 指针信息,其中 FActorRepListType 为 AActor*
增加了迭代器函数,可以直接使用 for 循环来遍同步列表了
FActorRepListRawView 不再使用,换成了 FActorRepListConstView 来存一个临时的列表引用
FActorRepListStatCollector
当前用于收集展示 RepList 的状态信息
执行控制台命令
1 | Net.RepGraph.Lists.Stats |
后,逻辑和 4.26 不同,因为结点的同步列表数结构发生变化了,Debug 信息的收集也不太一样了
会执行
1 | void UReplicationGraph::CollectRepListStats(FActorRepListStatCollector& StatCollector) const |
其中会对所有的 Node 执行
1 | void UReplicationGraphNode::DoCollectActorRepListStats(FActorRepListStatCollector& StatsCollector) const |
现在 Node 节点提供了一个可重写的函数
1 | /** |
可以自定义操作
FActorRepListStatCollector
自己的结点如果需要获得准确的 Debug 信息,应当重写函数,并调用
1 | void FActorRepListStatCollector::VisitRepList(const UReplicationGraphNode* NodeToVisit, const FActorRepListRefView& RepList) |
和
1 | void FActorRepListStatCollector::VisitStreamingLevelCollection(const UReplicationGraphNode* NodeToVisit, const FStreamingLevelActorListCollection& StreamingLevelList) |
等来加入节点中的同步列表信息,信息记录的内容有
1 | struct FRepListStats |
会按照节点类型,Streaming Level 类型 来分类存储展示
新增结点 TearDown 函数
1 | /** Mark the node and all its children PendingKill */ |
因为上面的重构,需要手动调用自行管理的同步列表的 TearDown ,来清空 List
同时也可以自定义需要的逻辑在里面
例如
1 | void UReplicationGraphNode_ActorList::TearDown() |