【问题标题】:Trying to understand Unreal Engine 4 replication试图理解虚幻引擎 4 复制
【发布时间】:2021-08-04 19:13:09
【问题描述】:

我正在尝试了解如何在客户端和服务器之间调用事件。我现在的目标很简单。我想创建可供 2 名玩家互动的任何东西。

我能想到的最简单的事情是点击时会切换颜色的立方体。所以我确实创建了基于演员的蓝图,检查了“复制”和 AlwaysRelevant 以确保。 PlayerController 也被复制,不需要 pawn。

换色蓝图:

如果这很重要,SM 只是静态网格。据我所知,客户端无权调用多播事件,所以我想通过服务器推送它,但它停在那里。从服务器调用按预期工作,颜色本身被复制到客户端,但是客户端不能自己更改颜色。

我在这个概念中缺少什么?我已经观看了大约 5 个关于复制的视频,我开始认为缺少一些东西,这对除了我以外的每个人来说都是显而易见的,或者他们的示例不需要我在这里做的事情。

【问题讨论】:

    标签: unreal-engine4 multiplayer unreal-blueprint


    【解决方案1】:

    正如您所发现的,玩家的客户端不能直接在玩家不拥有的actor上调用服务器RPC。调用必须通过该玩家的 PlayerController 进行路由。然后,玩家的 PlayerController 的服务器副本可以调用服务器拥有的 Actor 的服务器方法。

    另一个问题是您似乎将 RPC 和复制的属性用于同一目的。我不清楚为什么要复制changed,因为您是在通常在所有机器上运行的多播事件中修改它。这是很难找到竞争条件错误的秘诀。

    虚幻中的复制绝对是更难掌握的概念之一。对我帮助最大的资源是 this guide,虽然已经过时,但既全面又切中要害。

    【讨论】:

    • 这是我在这一切中缺少的部分。可能是因为我看到的所有教程都是关于复制棋子和分配的演员,比如武器。变量被复制只是因为它是反复试验,因为我找不到解决方案。它将被关闭。谢谢你指出这一点。很高兴有这个指南,一定会进入它。这回答了我的问题:)
    【解决方案2】:

    你不能在 PlayerController 中拥有它,它必须在 Pawn 中,或者如果没有,在 PlayerState 中,否则它不会被共享给其他客户端。

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2015-07-03
      • 2019-12-09
      • 2020-03-26
      • 2023-03-28
      相关资源
      最近更新 更多