2011-01-26 2 views
2

J'essaie de faire fonctionner Game Center et il est presque là. Le seul problème est que les scores affichés n'ont aucun sens. Ceci est mon code postal score:Game Center affichant des scores bidon - iPhone

-(IBAction)subScore 
{ 
    { 
     GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:@"katplay"] autorelease]; 

     scoreReporter.value = gcPost; 
     NSLog(@"posted"); 
     NSLog(gcPost); 

     [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) { 
      if (error != nil) 
      { 
       NSLog(@"failed!!!"); 
       NSLog(gcPost); 
      } 
     }]; 
    } 
} 

Je joue le jeu et obtenir mon score et afficher la console où le journal dit que gcPost = 2500. Quand je regarde le classement de mon score est 100,929,392 Points. Je n'ai aucune idée d'où ce nombre aurait pu provenir.

Est-ce qu'il me manque quelque chose de basique?

Chris

+0

Quels sont les types de 'GKScore.value' et' gcPost'? Comment lisez-vous la partition de gamecenter? – sarnold

+0

Je ne suis pas sûr de GKScore.value. gcPost est "int * gcPost;". Je suivais un tutoriel YouTube qui m'a fourni tout ce code. Je ne prends pas le score de gamecenter, je lance la fenêtre de classement dans l'application et je la vérifie ici. – edhog

Répondre

2

Juste mis en œuvre Game Center dans mon application. Vous devez convertir votre nombre entier sur un int64_t. En termes Objective-C, c'est LongLong. Vous pouvez modifier ceci:

scoreReporter.value = gcPost;

à ceci:

scoreReporter.value = [[NSNumber numberWithInt:gcPost] longLongValue];

Je vous encourage fortement à lire la Apple Documentation on Game Center. C'est une lecture rapide et facile. Vous pouvez également copier la plus grande partie du code.

+1

Merci, cela a fonctionné! J'ai utilisé le document Apple pour copier le code. Je ne savais pas grand-chose sur les entiers 64 bits. – edhog

0

De quel type est gcPost? La propriété GKScore.value attend une valeur de type int64_t. Ma conjecture est que quel que soit le type de gcPost ne joue pas bien avec ça. Essayez d'effectuer une conversion explicite du type d'origine en int64_t.

+0

Je l'ai juste comme "int * gcPost;". Ma connaissance du code est très limitée, donc je vais me pencher sur la conversion en int64_t maintenant. Merci – edhog

2

Vous mentionnez que gcPost est "int * gcPost". Sûrement ceci devrait juste être "int gcPost"? Vous voulez l'entier réel plutôt qu'un pointeur.