這是一個古老的線程,但因爲我最近與此相關的一些掙扎,我想這可能幫助其他人誰通過:
參加者插槽的比賽中,是否佔用。玩家填補這些插槽,因爲他們被發現。整個「總是輪到我」的事情等同於:您正在使用預設數量的參與者(插槽)進行遊戲,但這些插槽可能尚未填充。這使得在某些情況下向用戶顯示信息非常困難,因爲您只是從空的參與者字段中獲得空值,而且您需要正常處理這些情況。在第一回閤中,後來的用戶甚至不知道他們已經被邀請,直到每個前面的玩家轉牌。當你輪到你時,你需要從你的遊戲中取出蒸汽,然後你的被邀請者因爲不能玩而拒絕。國際海事組織,該模型只適用於自動匹配。邀請朋友參加比賽時,我不太喜歡用戶體驗。但是,就是這樣。
因此,爲了結束轉彎,您基本上需要帶上您的match.participants數組並將當前(又名本地)球員移動到列表的末尾。不要試圖直接編輯match.participants,這會導致各種片狀。相反,建立一個新的數組並按照你想要的順序注入項目。我用這個代碼,我認爲最初來自雷Wenderlich網站:
NSMutableArray *nextParticipants = [NSMutableArray new];
for (GKTurnBasedParticipant *participant in theMatch.participants)
{
if ([participant.player.playerID isEqualToString:[GKLocalPlayer localPlayer].playerID])
{
[nextParticipants addObject:participant];
}
else
{
[nextParticipants insertObject:participant atIndex:0];
}
}
然後結束之交爲:
[theMatch endTurnWithNextParticipants:nextParticipants
turnTimeout:timeOutSeconds
matchData:updatedMatchData
completionHandler:^(NSError *error)
{
....
}];
這工作,因爲所有的參與者槽的存在,從目前看比賽被實例化,無論玩家是否已經填充了這些參與者時隙。這些未填充的插槽將處於「受邀」或「匹配」狀態。當其中一個插槽泡泡到陣列的頂部時,讓它「輪到」,然後遊戲中心去尋找被邀請者/自動匹配的玩家來填充插槽並輪流。
感謝您的解釋。我仍然無法包裹頭腦的問題是我的下一個參與者數組應包含哪些內容,如果這僅僅是一個雙人遊戲而我的對手是零。 –
這是「參與者」屬性中不是本地玩家的項目。 –