1

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

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

4

1 回答 1

2

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

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

等待确认...

B收到消息

B发送消息“我收到321321777”

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

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

等待确认...

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

B 收到消息。标签是 321321777

B发送消息“我收到321321777”

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

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

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

于 2016-02-01T11:35:26.820 回答