UE4网络部分

UE4网络部分,第1张

本节内容参考视频彻底掌握UE4网络-03 Actor Replication

文章目录
  • Replication简介
  • Actor Replication
    • 开启Actor Replication方法
    • 情况模拟
  • Property Replication
    • 开启Property Replication方法
    • 情况模拟
  • Rep_Notify
    • Rep_Notify开启方法

Replication简介

前一篇博文说过,在这个通信方式下,信息只能从服务端到客户端,如果客户端需要发送信息给服务端,那么就得用RPC框架。


还有一个很重要的点,Actor及其派生类才有Replication的能力,也可以理解为支持Replication的代码是写在Actor类里面的。


最后,它有三种分类:Actor Replication、Property Replication、Component Replication

Actor Replication

它其实有两层含义,一个是服务器生成一个对象、客户端跟着生成一个对象,相当于客户端从服务端复制了一份。


另外一层就是Actor Replication需要被开启,那么当前对象的属性、组件才能够被复制给客户端,否则是不行的。


同时,也要开启Actor Replication,才能接着实现RPC框架,所以Actor Replication和RPC也是有关联的。


开启Actor Replication方法

蓝图编辑器上勾选"Replicaties",C++则是在构造函数里设置"bReplicaties = true"。


情况模拟

这里是博客,没有办法放视频,如果想具体地了解一下是否开启Actor Replication的区别可以移步博客开头的链接。


安宁老师实验的大概情况就是,在我们关闭Actor Replication开关的时候,设置服务端生成一个Actor,此时在客户端是无法看到这个Actor的,也就是服务端生成的对象、客户端并不会生成,但是玩家是没有办法穿过那个Actor所在的位置的,因为这个对象在服务端当中生成了,当玩家客户端想穿过这里的时候,服务端检测当然是不通过的。


而打开Actor Replication开关的时候,客户端和服务端都能正常看到Actor的生成。


下面这就是情况展示,第一个是没开Actor Replication,第二个是开了Actor Replication。



Property Replication

Actor Replication是复制整个对象,而是否复制对象的属性,取决于是否打开了Property Replication。


开启Property Replication方法

蓝图勾选"Replicaties",在属性的details里面找到Replication选择框选为"Replicatied"

C++则是:
1.属性前增加UPROPERTY(Replicated)
2.cpp文件中,在类中重写GetLifetimeReplicatedProps函数中,并添加:DOREPLIFATIME(类名称,变量名)。


这个函数在基类中存在,这里只是重写,不需要声明。



记得现在头文件中添加

#include "Net/UnrealNetwork.h"

头文件中:

cpp文件中:

情况模拟


我们蓝图是这么设置的,我们来看看是否开启Property Replication,打印的Health的值会有什么区别。


这是开启的情况。




这是未开启。




属性是否被复制了,一目了然。


Rep_Notify

如果一个变量设置为Rep_Notify,当该变量发生复制时,对于蓝图而已,服务端和收到该值的客户端都可以调用一个自定义的函数,对于C++的版本略有区别,仅在客户端调用这个自定义函数。


一个实际的应用就是,比如玩家的血量在服务端发生了改变,然后血量这个变量复制以后,客户端去调用一个自定义函数,将这个更新以后的血量显示在自己的UI界面上。


Rep_Notify开启方法

蓝图里,在属性的details里面找到Replication选择框选为"Rep_Notify",这个框框跟我们设置为"Replicatied"在同一个地方。


C++里面,变量前加上"UPROPERTY(ReplicatedUsing=xxx)"。


其中,xxx为需要调用的自定义函数名称。


并且也需要重写下面这个函数。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/563222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存