簡體   English   中英

從 GKTurnBasedMatchMakerViewController 檢索 GKTurnBasedMatch 對象 - Swift 4

[英]Retrieve GKTurnBasedMatch objects from GKTurnBasedMatchMakerViewController - Swift 4

我正在嘗試實現一個回合制多人游戲(2 人戰略棋盤游戲)。 我已成功驗證本地播放器並呈現 GKTurnBasedMatchmakerViewController(標准界面)。

我對如何檢索玩家選擇的 GKTurnBasedMatch 對象(如果可用)感到有些困惑。 GKTurnBasedMatchmakerViewControllerDelegate 協議的這種方法對於這個目的來說似乎很明智,但顯然它已被棄用。

func turnBasedMatchmakerViewController(_ viewController: GKTurnBasedMatchmakerViewController, didFind match: GKTurnBasedMatch)

任何提示將不勝感激!

我同意,實現這一目標的委托功能很有用。

我的解決方案是在呈現媒人視圖控制器的委托中注冊一個偵聽器,我們稱之為 mainVC。 MainVC 應該符合 GKLocalPlayerListener 協議。

// In mainVC
GKLocalPlayer.localPlayer().registerListener(self)

然后當玩家在標准界面中選擇一場比賽時,將調用以下函數,您必須在 mainVC 中實現該函數:

// in mainVC
func player(player: GKPlayer, receivedTurnEventForMatch match: GKTurnBasedMatch, didBecomeActive: Bool) {
  // Dismiss the turnBasedMatchmakerViewController standard interface
  // Load your match using the match object passed above
}

在此函數中,關閉與玩家匹配的標准界面,然后使用 segue 或其他方式加載您的游戲。

receivedTurnEventForMatch 函數是用已發生的事件更新匹配的標准方法。 它在以下情況下被調用:

  • 當前回合有與之關聯的超時,並且該回合即將到期。
  • 玩家接受其他玩家的邀請。
  • 輪到另一位玩家。 在這種情況下,didBecomeActive 為假。
  • 比賽數據由其他玩家保存。
  • 玩家收到提醒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM