iOS Game Center提交float而不是int64_t

时间:2011-07-09 01:08:36

标签: ios objective-c game-center gamekit gkscore

我正在尝试向游戏中心排行榜提交两位小数的float,但是唯一允许提交的格式为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 个答案:

答案 0 :(得分:5)

GameCenter只接受int64_t

显示的值(如浮点数或小数值)与显示为整数的值之间的唯一区别是小数点的位置,而实际上所有值都是int64_t。

如果您的内部表示是双倍的,并且您将游戏中心配置为在小数点后显示3位数,则必须通过乘以10 ^ 3并转换为整数将其转换为整数。

int64_t gameCenterScore = (int64_t)(doubleValue * 1000.0f)

答案 1 :(得分:0)

您只能将64位整数作为分数提交到排行榜。来自documentation

  

对于Game Center,分数只是一个   您报告的64位整数值   应用。你可以自由决定   分数意味着什么,以及你的分数   应用程序计算它。当你   准备添加排行榜了   您的应用程序,您配置   iTunes Connect上的排行榜告诉我们   游戏中心应该如何得分   格式化并显示给播放器。   此外,您提供本地化字符串   这样就可以显示分数   正确地用不同的语言。一个   配置的关键优势   iTunes Connect中的排行榜就是这样   Game Center应用程序可以显示   没有你的游戏分数   写任何代码。

该文档页面应该告诉您格式化您的分数。听起来,为了显示类似浮动的分数,您将不得不修改iTunes Connect中的格式设置。

<强>更新

尝试使用increaseScore:

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

答案 2 :(得分:0)

您可以看到GKScore.h文件。

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

现在浮动值不可用。