在蓝图中同步Actor----Replicates----(1)

本篇不介绍如何使用以及具体操作,仅总结以及一些细节问题(具体操作点击这里----在蓝图中同步 Actor)

Actor 粗略的简介

    在开始总结之前,我们得先粗略的了解一下Actor,了解一个东西,一件事物,那就得首先弄清楚它是什么。

那么Actor是什么?

    Actor是“可以更新的一群组件”----源于官方文档,以及《大象无形》中描述也同样有描述Actor

    Actor它能够被挂载组件----《大象无形》

个人理解为

    Actor就是一个鱼缸,你可以在里面放很多东西,我们把这些东西就称为组件

  • 那么它的主要功能我们就知道了,那就可以用来放一些特殊东西(组件)
  • 但是他还有另外一个主要功能就是同步

对Actor的介绍到这里就结束了,深入了解需要靠自己了,下面就是进入主题

Actor 同步

Actor Relication 简述

    Actor是网络传输的核心,甚至可以说Actor就是网络同步/传输的基本单位。----源于深入浅出UE4网络

网络同步的种种,如复制属性和函数调用都基于Actor的Replicate。如果 Replicate=false 那么你做的一切都是徒劳的。启用Replicate的方式有两种----蓝图和C++。在这里只说蓝图

同步两大要点

  1. 必须在服务器端
  2. Actor的Replicates必须为TRUE

UE4网络同步示意图

示意图

这个这么简陋的图肯定是我自己画的啦哈哈哈哈

213518_LY9c_3202881.png

简单说明

  • 只有服务器向客户端同步,客户端不能向服务器端同步
  • 而且客户端之间是不存在链接的

一个简单的同步测试

角色蓝图代码节点

205830_MKAO_3202881.png

结果

210416_nzXE_3202881.png

可以看到,在我们按下E键之后,生成的Actor并未同步到全部的窗口,并且连在服务器端生成的也是没有同步

这是为什么?

这是因为我们并没有开启火焰这个Actor的Replicates的属性,所以上面的要点要牢记

开启Replicate

需要在对应的蓝图的类默认值(火焰这个蓝图的类默认值)里勾选181221_ZJqO_3202881.png

在这里需要注意一个属性----NetLoadOnClient

这个属性会默认在载入地图的时候自动在客户端显示/载入Actor,即使你没有勾选Replicate

所以我们要取消勾选181326_UFNC_3202881.png

否则会出现下面的结果(这个不是上面的同步例子,只是为了展示NetLoadOnClient的影响)

181944_a4Ln_3202881.png

按照正确的应该就是NoReplicates是不会显示火焰的,但是因为勾选了NetLoadOnClient所以会默认自动加载 NetLoadOnClient只会影响在场景的Actor,而不会影响动态生成的Actor

继续----一个简单的同步测试----的例子

现在我们开启了同步属性也就是Replicate=true,那么接下来我们在测试一遍

服务器生成

我们在服务器生成一个火焰Actor,可以看到所有窗口都成功同步

211501_uAiH_3202881.png

客户端生成

    我们在客户端生成一个火焰Actor,可以看到只有当前的客户端才会生成火焰,其他窗口并不会同步生产(服务器以及其他客户端并不会同步在其中一个客户端生成的Actor)

212027_OMFo_3202881.png

总结

  • 只有服务器向客户端同步,客户端不能向服务器端同步
  • 而且客户端之间是不存在链接的
  • 需要生成的Actor或者说需要同步的Actor,必须将Replicate设置为TRUE

转载于:https://my.oschina.net/u/3202881/blog/1592779

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值