我正在尝试向游戏中心排行榜提交两位小数的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);
}
请帮忙,我一直在谷歌上搜索疯狂,找不到答案。
答案 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.
现在浮动值不可用。