iOS Game Center отправляет float вместо int64_t - PullRequest
1 голос
/ 09 июля 2011

Я пытаюсь отправить float с двумя десятичными знаками в мою таблицу лидеров Game Center, однако единственный формат, разрешенный для отправки - int64_t. Я использую метод оценки отчета Apple по умолчанию:

- (void)reportScore:(int64_t)score forCategory:(NSString *)category {
    GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category];   
    scoreReporter.value = score;
    [scoreReporter reportScoreWithCompletionHandler: ^(NSError *error) {
        [self callDelegateOnMainThread: @selector(scoreReported:) withArg: NULL error: error];
    }];
}

Я пытаюсь использовать этот метод для предоставления оценки методу отчета:

- (IBAction)increaseScore {
    self.currentScore = self.currentScore + 1;
    currentScoreLabel.text = [NSString stringWithFormat: @"%lld", self.currentScore];
    NSLog(@"%lld", self.currentScore);
}

Пожалуйста, помогите, я гуглил как сумасшедший и не могу найти ответ на этот вопрос.

Ответы [ 3 ]

5 голосов
/ 06 февраля 2013

GameCenter принимает только int64_t

Единственная разница между значениями, которые отображаются в виде чисел с плавающей точкой или десятичных значений, и значениями, которые отображаются как целые числа, - это положение десятичной отметки, хотя на самом деле все они являются int64_t.

Если ваше внутреннее представление двойное, и вы настроили игровой центр на отображение 3 цифр после десятичной запятой, вам нужно преобразовать его в целое число, умножив на 10 ^ 3 и приведя к целому числу.

int64_t gameCenterScore = (int64_t)(doubleValue * 1000.0f)
0 голосов
/ 09 июля 2011

Вы можете увидеть файл GKScore.h.

@property(nonatomic, assign)            int64_t     value;              // The score value as a 64bit integer.

Так что значение с плавающей запятой теперь недоступно.

0 голосов
/ 09 июля 2011

Вы можете отправлять только 64-битные целые числа в виде баллов в таблицу лидеров. Из документации :

Для Game Center оценка - это всего лишь 64-битное целое значение, указанное вашим приложение. Вы можете решать что означает оценка и как ваш Приложение рассчитывает это. Когда ты готовы добавить в таблицу лидеров ваше приложение, вы настраиваете списки лидеров на iTunes Connect, чтобы сказать Game Center, каким должен быть счет отформатирован и отображается на плеере. Кроме того, вы предоставляете локализованные строки так что результаты могут быть отображены правильно на разных языках. ключевое преимущество настройки лидеров в iTunes Connect является то, что приложение Game Center может показать результаты вашей игры без вас написать любой код.

На этой странице документа должна быть представлена ​​информация о форматировании вашего счета. Похоже, что для отображения результатов в формате «поплавок» вам придется повозиться с настройками формата в iTunes Connect.

Обновление

Попробуйте для увеличенияScore:

- (IBAction) increaseScore {      
     self.currentScore = self.currentScore + 5; 
     float score = (float)self.currentScore / 100.0f;
     currentScoreLabel.text = [NSString stringWithFormat: @"%f", score]; 
     NSLog(@"%lld", self.currentScore);
}
...