이 오래된 스레드,하지만 난 최근에 관련된 무언가 고생하기 때문에, 나는이 통과 다른 사람 도움이 될 생각 :
참가자가 점유 여부 게임 슬롯이됩니다. 플레이어는 발견 된 슬롯을 채 웁니다. 전체 "It 's always my turn"은 다음과 같습니다 : 당신은 미리 설정된 참가자 수 (슬롯)로 게임을하고 있지만 슬롯이 아직 채워지지 않았을 수 있습니다. 이렇게하면 빈 참가자 필드에서 NULL을 반환하기 때문에 사용자에게 정보를 표시하는 것이 어렵고 이러한 상황을 정상적으로 처리해야합니다. 첫 번째 턴에서 후속 사용자는 각 선행 플레이어가 차례가 될 때까지 초대되었음을 알지조차 모릅니다. 턴을 걸면 게임 플레이에서 스팀이 빠져 나와 이 표시되고은 재생할 수 없기 때문에 초대 대상자가 감소합니다. IMO, 모델은 automatch에서만 실행 가능합니다. 친구를 게임에 초대 할 때 사용자 경험이 마음에 들지 않습니다. 그러나 그것이 그 방법입니다.
차례를 끝내려면 기본적으로 match.participants 배열을 가져 와서 현재 (일명 로컬) 플레이어를 목록의 끝으로 이동하십시오. match.participants를 직접 편집하지 마십시오. 모든 종류의 박편이 만들어집니다. 대신 새로운 배열을 만들고 원하는 순서대로 항목을 삽입하십시오.
[theMatch endTurnWithNextParticipants:nextParticipants
turnTimeout:timeOutSeconds
matchData:updatedMatchData
completionHandler:^(NSError *error)
{
....
}];
참가자 슬롯이 모두 존재하기 때문에이 순간 경기에서 작동
: 다음과 같은 턴을 종료
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];
}
}
: 나는 원래 레이 Wenderlich 사이트에서 나온 생각이 코드를 사용 플레이어가 해당 참가자 슬롯을 채웠는지 여부에 관계없이 인스턴스화됩니다. 채워지지 않은 슬롯은 "초대 됨"또는 "일치"상태가됩니다. 그 슬롯 중 하나가 배열의 맨 위로 거품을 내면서 "자신의 차례"로 만들면 게임 센터는 초대받은 사람/자동 완성 플레이어가 슬롯을 채우고 차례를 찾아 보게됩니다.
그 설명에 감사드립니다. 여전히 2 인 게임이고 내 상대가없는 경우 내 nextParticipants 배열에 포함되어야 할 것이 무엇인지 여전히 내 머리를 감쌀 수없는 질문이 있습니다. –
'participants'속성에있는 로컬 플레이어가 아닌 항목입니다. –