【发布时间】:2016-02-01 10:44:07
【问题描述】:
我正在使用 Photon 和 Unity3D 引擎构建多人游戏。 我正在使用 photonView.RPC 在客户端之间发送数据和值。但有时由于网络问题,发送的 RPC 无法在客户端执行。
我有什么方法可以从客户端(发送 RPC)检查 RPC 是否成功发送,如果没有,则再次发送 RPC?
【问题讨论】:
标签: unity3d multiplayer photon
我正在使用 Photon 和 Unity3D 引擎构建多人游戏。 我正在使用 photonView.RPC 在客户端之间发送数据和值。但有时由于网络问题,发送的 RPC 无法在客户端执行。
我有什么方法可以从客户端(发送 RPC)检查 RPC 是否成功发送,如果没有,则再次发送 RPC?
【问题讨论】:
标签: unity3d multiplayer photon
从概念上讲,您可以做到这一点的唯一方法是,
A 发送带有身份代码(例如“321321777”)的消息
A 等待确认...
B收到消息
B 发送消息“我收到 321321777”
这就是你所能做的。请注意,这引入了超时的概念。上面的内容实际上更像这样......
A 发送带有身份代码(例如“321321777”)的消息
A 等待确认...
如果(例如)0.5 秒后没有确认,请再次发送。 继续这样做。
B 收到消息。标签是 321321777
B 发送消息“我收到 321321777”
B 收到的任何“321321777”副本,B 忽略它。但是:如果B收到多个“321321777”,B确实会再次发送越来越多的“321321777”确认消息
值得注意的是,作为一般规则,“电子游戏不是这样运作的。”通常情况下,您只需每秒发送无数个位置(或其他),如果错过了一些 - 没关系。
也不要忘记 Unity 网络确实为您“可靠发送” - “PUN”中可能有这样的概念。
【讨论】: