2

我有一个关于在 iOS 上玩多人游戏时通过 Game Center 发送和接收数据的问题。

在我匹配两个人之后,在我的游戏中,游戏被带到用户可以开始玩的游戏屏幕。

由于两台设备不会同时加载游戏画面(网络原因),我的第一台设备中的 viewDidLoad 功能有时会在第二台设备加载画面时已经完成。

这意味着例如在 viewDidLoad 我通过我的本地播放器别名发送到我的较慢设备,因为较慢的设备仍在加载时较快的设备正在加载,当屏幕加载时,我较快的设备接收较慢设备播放器别名,反之则不然。

因此,一个设备是否有任何简单的方法可以检测另一个设备何时加载,并从那里推送任何相关代码?

4

1 回答 1

1

首先,您应该只在建立连接后发送消息。您可以match: player: didChangeState:通过等待GKPlayerStateConnected状态在委托的方法中检测到这一点。如果您在此事件发生后发送任何消息,它应该会到达。

否则,您的设计可能会有问题。您的代理人应该能够解释和使用传入的任何消息。如果您正在交换玩家别名并且在开始游戏时确实需要知道它们,您应该等待别名作为触发器传入,或者想出一个更精细的握手协议。

所以,一个简单的食谱是

  1. GKPlayerStateConnected收到消息后不久发送别名。
  2. 在收到您的同伴的别名后转换到您的游戏视图。
于 2013-01-05T23:04:39.603 回答