游戏中心的回合制游戏与语音聊天功能详解
1. 回合制游戏基础要点
在回合制游戏中,参与者数组的大小和顺序在比赛开始时就已确定,并且在整个比赛过程中以及每个设备上都是相同的。参与者数组中可能会存在 nil 对象,这些是未匹配玩家的占位符。游戏中心仅会在轮到新玩家行动时为其匹配对手,这意味着每次自动匹配后,都会轮到你行动。每一轮行动结束后,需要将新的游戏数据发送给下一位玩家,该玩家会更新游戏状态并将其再发送给下一位玩家(可能会再次回到第一位玩家)。
2. GKLocalPlayerListener 扩展
为了监控回合事件的变化以及比赛的结束,我们需要为 GKLocalPlayerListener 添加两个扩展函数,这也有助于在游戏进行过程中更新比赛数据。以下是具体的代码实现:
extension GameViewController: GKLocalPlayerListener {
func player(_ player: GKPlayer, receivedTurnEventFor match: GKTurnBasedMatch, didBecomeActive: Bool) {
guard match.matchID == self.match?.matchID else {
return
}
self.match = match
}
func player(_ player: GKPlayer, matchEnded match: GKTurnBasedMatch
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



