Sto cercando di utilizzare Game Center: multi playerGame Center: partita delegato non è chiamato dopo aver trovato una corrispondenza
Fino ad ora, i giocatori sono l'autenticazione a Game Center, possono inviare/leggere colonne sonore, e acheivements. Per le funzionalità multiplayer, ho provato entrambi i metodi: - utilizzando l'interfaccia Game Center per trovare una corrispondenza. - Trova una corrispondenza a livello di programmazione.
Per entrambi i modi ho il seguente problema: corrispondenza del delegato della partita: player: didChangeState: il metodo non viene chiamato. In apple docs, si afferma che questo delegato viene chiamato se un giocatore è connesso o disconnesso.
Nel mio caso questo delegato non viene mai chiamato. Penso che mi manca un passaggio. qui dopo l'implementazione del mio delegato (come specificato in apple doc).
- (void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state
{
switch (state)
{
case GKPlayerStateConnected:
// handle a new player connection.
break;
case GKPlayerStateDisconnected:
// a player just disconnected.
break;
}
if (!self.matchStarted && match.expectedPlayerCount == 0)
{
self.matchStarted = YES;
// handle initial match negotiation.
}
}
e anche il codice per trovare una corrispondenza.
-(void) findProgrammaticMatch
{
GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;
[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request
withCompletionHandler:^(GKMatch *FoundMatch, NSError *error)
{
if (error)
{
// Process the error.
StatusLabel.text = @"Match Not Found";
}
else if (FoundMatch != nil)
{
MultiPlayerMatch = FoundMatch; // Use a retaining property to retain the match.
StatusLabel.text = @"Match Found";
MultiPlayerMatch.delegate = self; // start!
// Start the match.
// Start the game using the match.
[self StartMatch];
}
}];
}
Grazie per il vostro aiuto.
Non credo che questo sia vero. Ho appena provato con la corrispondenza automatica e non ha mai sparato aChangeState. Solo FindMatch. Penso che lo scambio di dati potrebbe accadere solo se un giocatore entra in GKPlayerStateUnknown e poi torna indietro o se viene aggiunto a una partita in corso. –