一. Actor Replicated 演员同步
Replicated 是单向的 ,Actor Replicated表示客户端单向同步服务端的actor。例子:
蓝图:
actor 下勾选 replicated (需要actor类型)
c++:
breplicated 设为true
测试:
关卡蓝图中spawn出刚刚创建的actor(使用 has authority 节点仅仅在服务端生成)
设置 number of player 为1以上, 使用new editor window 跑关卡
可以看到客户端也同步到了这个actor。
如果没勾选replicated 或者c++没设置的话:
二. Property Replicated 属性同步
蓝图:
新建一个变量比如这个actor的生命值, 勾选replication
c++:
需要使用到反射,加上replicated关键字
override 方法 GetLifetimeReplicatedProps,DOREPLIFETIME宏添加 要replicated的变量
测试:
在测试actor中, 仅在服务端把生命值设为400.
关卡蓝图同样spawn ,
在要被spawn的actor里判断自己所在的是客户端还是服务端,分别打印,结果:
客户端的值也同步为400。
如果没有 replicated 生命值:
去掉关键字
注释掉重写的方法。
结果:
二. Replicated_Nofity 同步通知
当服务端变量发生变化的时候会自动调用的事件,比如:服务端扣血 客户端ui发生变化
蓝图:
依然用上文的health变量,这里Replication改为 RepNofity.
会自动添加事件函数。
在这个函数中打印两端的值。
然后不停的改变服务端的值。
测试:
c++:
使用反射关键字,ReplicatedUsing ,绑定函数Rep_Health,
测试:
注意:c++仅调用客户端,可以看到客户端的值已经同步。