2016-05-26 75 views
0

我創建了一個基於2個球員輪流遊戲。我希望每個球員有24個小時的時間來輪到他們。如果他們沒有達到這個時間限制,我想結束比賽。嘗試設置時間限制在我的遊戲中心遊戲

我已經採用的NSTimer嘗試,在該下方的功能選擇器。 「請求的操作無法完成,因爲會話處於無效狀態」:

func timerCalled() { 
         for part in currentMatch!.participants! { 
          (part).matchOutcome = .Tied 
         } 
         currentMatch?.endMatchInTurnWithMatchData(data!, scores: nil, achievements: nil, completionHandler: { (error) -> Void in 
          if error != nil { 
           print(error) 
          } 
          self.statusLabel?.text = "Game has ended" 
         }) 
        } 

我的比賽,但是,當這個功能運行時,與此打印到控制檯崩潰。它因爲我在玩家輪到他之後開始計時而崩潰,所以當「他」結束遊戲時不再輪到他。如果在時間到了的時候讓當前玩家結束遊戲,我相信它會起作用,但是如何/何時啓動計時器?當玩家1輪到他時,我必須用玩家2開始計時。我該怎麼做?

回答

0

遺憾的是,截至記者發稿,遊戲中心不支持你想要做什麼。

,因爲正如你所看到的,你不能依靠player2採取輪到他們同時開始計時或者是積極的定時器觸發時你有定時器的做法不會有效。而且,正如你所看到的,玩家1不能強迫玩家2結束。

當你撥打endTurnWithNextParticipants時,你可以設置turnTimeout參數,基本上說:「我已經完成了這個回合,下一個玩家有這段時間來完成他們的回合。」但是,根據WWDC視頻中的每一個,轉過來的最後一名玩家永遠不會超時。所以,在雙人遊戲(真的是任何回合制比賽)中,最後一名玩家總是具有競爭優勢,因爲他們永遠不會超時。

由於周圍的工作,我從比賽數據採取之前玩家的最後一輪日期,超時值添加到它,並檢查是否當前時間超出。如果是這樣,我就在那裏殺掉轉彎。然而,玩家2可能已經等待幾天甚至幾周才能重新開始遊戲。或者他們可能永遠不會回來在這種情況下,基於回合的比賽就會陷入困境,除非最終球員迴歸,否則之前的球員無法繼續前進。