UE4 网络01- Replicated

一. 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++仅调用客户端,可以看到客户端的值已经同步。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值