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