2

我正在尝试向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);
}

请帮忙,我一直在疯狂搜索,找不到答案。

4

3 回答 3

5

GameCenter 只接受 int64_t

显示为浮点数或十进制值的值与显示为整数的值之间的唯一区别是小数点的位置,而实际上它们都是 int64_t。

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

int64_t gameCenterScore = (int64_t)(doubleValue * 1000.0f)
于 2013-02-06T12:58:16.500 回答
1

您只能将 64 位整数作为分数提交到排行榜。从文档中:

对于 Game Center,分数只是您的应用程序报告的 64 位整数值。您可以自由决定分数的含义,以及您的应用程序如何计算它。当您准备好将排行榜添加到您的应用程序时,您可以在 iTunes Connect 上配置排行榜,以告知 Game Center 应如何格式化得分并将其显示给玩家。此外,您还提供本地化字符串,以便分数可以以不同的语言正确显示。在 iTunes Connect 中配置排行榜的一个关键优势是 Game Center 应用程序可以显示您的游戏得分,而无需您编写任何代码。

该文档页面应该告诉您有关格式化您的分数的信息。听起来为了显示类似浮动的乐谱,您必须修改 iTunes Connect 中的格式设置。

更新

试试这个增加分数:

- (IBAction) increaseScore {      
     self.currentScore = self.currentScore + 5; 
     float score = (float)self.currentScore / 100.0f;
     currentScoreLabel.text = [NSString stringWithFormat: @"%f", score]; 
     NSLog(@"%lld", self.currentScore);
}
于 2011-07-09T01:24:01.340 回答
0

您可以看到 GKScore.h 文件。

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

所以浮点值现在不可用。

于 2011-07-09T01:29:07.040 回答