【问题标题】:How to ensure RPC was sent successfully in Photon Unity?如何确保 RPC 在 Photon Unity 中成功发送?
【发布时间】:2016-02-01 10:44:07
【问题描述】:

我正在使用 Photon 和 Unity3D 引擎构建多人游戏。 我正在使用 photonView.RPC 在客户端之间发送数据和值。但有时由于网络问题,发送的 RPC 无法在客户端执行。

我有什么方法可以从客户端(发送 RPC)检查 RPC 是否成功发送,如果没有,则再次发送 RPC?

【问题讨论】:

    标签: unity3d multiplayer photon


    【解决方案1】:

    从概念上讲,您可以做到这一点的唯一方法是,

    A 发送带有身份代码(例如“321321777”)的消息

    A 等待确认...

    B收到消息

    B 发送消息“我收到 321321777”

    这就是你所能做的。请注意,这引入了超时的概念。上面的内容实际上更像这样......

    A 发送带有身份代码(例如“321321777”)的消息

    A 等待确认...

    如果(例如)0.5 秒后没有确认,请再次发送。 继续这样做。

    B 收到消息。标签是 321321777

    B 发送消息“我收到 321321777”

    B 收到的任何“321321777”副本,B 忽略它。但是:如果B收到多个“321321777”,B确实会再次发送越来越多的“321321777”确认消息

    值得注意的是,作为一般规则,“电子游戏不是这样运作的。”通常情况下,您只需每秒发送无数个位置(或其他),如果错过了一些 - 没关系。

    也不要忘记 Unity 网络确实为您“可靠发送” - “PUN”中可能有这样的概念。

    【讨论】:

    • 感谢您的回答。 PUN 鼓励在连接设置中在 UDP 和 TCP 之间使用 UDP,UDP 是可靠的。如果连接可靠,那么是否有机会丢弃 RPC?
    • 一般来说,当他们在这个意义上说“可靠”时,是的,这意味着它已经完成了我所描述的一切。例如,Unity 网络中的“可靠”模式就是这样做的。所以这就是你的答案!请“打勾”并继续下一个问题!
    猜你喜欢
    • 2015-06-10
    • 2021-08-18
    • 2019-07-06
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    相关资源
    最近更新 更多