跳至主要內容

NT-2.2.1|复制延迟

Mr.Si大约 2 分钟u++

头像
静态网格物体,我在服务器上执行生成行为,只要Actor组件和这个子组件设置同步就能同步。
头像
为什么同样的方法却骨骼网格物体看不到同步结果?

RPC可靠性

头像
然后我用了RPC去实现
头像
依然没有同步!

SkeletalMeshComponent(继承自 SkinnedMeshComponent)及其 SkeletalMesh 都不会复制。

头像
这个问题其实和延迟有关系。虽然你同时启用了服务端和客户端,但他们始终有个创建和加入的先后顺序。
GIF
头像
更何况真实情况中的中途加入/断线重连等。
头像
那该怎么解决?

RepNotify

头像

用一个复制变量通知即可.

头像

这个子组件并不需要设置复制。但要保证这个父Actor要启用复制!

GIF
头像
这和我们上一篇强化认知中的OnRep异曲同工!

Has Authority

头像
对于非玩家物体,甚至可以直接用是否拥有权限来过滤远程
头像

事实上,你可以依托某些同生命周期的变量去实现这个,例如一些服务器生成的道具,假设我们设定道具品质一般生成什么样就是什么样。 借用这个品质的等级Int32变量同步时触发初始化函数。当然直接网格物体本身改成OnRep也是可以的

.h
UPROPERTY(ReplicatedUsing=OnRep_Mesh)
USkeletalMesh* Mesh;

UFUNCTION()
void OnRep_Mesh();