2017-02-17 31 views
1

我正在嘗試向GKTurnBasedMatch中的其他玩家發送交換。當我把它,我完成處理程序有很大的錯誤信息,用這些描述:如何真正啓動GKTurnBasedMatch,以便我可以發送交換?

The requested operation could not be completed because the session is in an invalid state. 
Game is not active, session state is Matching 

我想比賽的時候,剛好有兩名球員開始,但允許一共有16名球員。所以很自然我設置了maxPlayers = 16minPlayers = 2。我以爲這會在兩名球員坐下後自動開始比賽,但事實並非如此。

我試圖做到這一點,一旦比賽有兩名球員,:

if match.participants?.count == 2 { 
     match.status = GKTurnBasedMatchStatus.open 
    } 

但後來有人告訴我status是隻讀的。我無法手動設置它。現在

,與常規GKMatch,我正式通過調用開始比賽:

GKMatchmaker.shared().finishMatchmaking(for: match) 

但似乎沒有成爲GKTurnBasedMatch類似啄。

我怎樣才能真正開始比賽,所以我可以發送兩位球員之間的交換?

回答

1

男人,GKTurnBasedMatch上的文檔是稀疏。

以下是事實:您實際上並未明確啓動GKTurnBasedMatch。你只有結束它explicilty。

在遊戲過程中,您只需將一個活動玩家轉到另一個活動玩家。第一位玩家就坐時,遊戲技術上就會開始。

我遇到的問題是,當沒有其他活躍球員時,我已經通過了轉牌。所以我不小心告訴了Game Center把轉彎分配到一個空位。因此,當錯誤信息告訴我

Game is not active, session state is Matching 

這意味着當前座位是空和還在尋找一名球員來填補它。任何時候,當前玩家的狀態是Matching(這表示空座位),遊戲顯然退出活動狀態。

究竟爲什麼這會影響發送往來,其全部目的是使任何球員,不管當前的球員是誰,超越我之間的通信。但是你去了。

解決方案:確保當前回合由實際人員持有,並且不是空座位。然後你可以發送交換。否則你不能。

相關問題