簡體   English   中英

iOS Game Center 提交 float 而不是 int64_t

[英]iOS Game Center submit float instead of int64_t

我正在嘗試向我的 Game Center 排行榜提交兩位小數長度的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);
}

請幫忙,我一直在瘋狂搜索,找不到答案。

GameCenter 只接受 int64_t

顯示為浮點數或十進制值的值與顯示為整數的值之間的唯一區別是小數點的 position,而實際上它們都是 int64_t。

如果您的內部表示是雙精度的,並且您將游戲中心配置為在小數點后顯示 3 位數字,則必須通過乘以 10^3 並轉換為 integer 將其轉換為 integer。

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

您只能將 64 位整數作為分數提交到排行榜。 文檔中:

對於 Game Center,分數只是您的應用程序報告的 64 位 integer 值。 您可以自由決定分數的含義,以及您的應用程序如何計算它。 當您准備好將排行榜添加到您的應用程序時,您可以在 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);
}

您可以看到 GKScore.h 文件。

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

所以浮點值現在不可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM