5

私は 5 つの異なるゲーム モードを持つアプリを持っています。そのうちの 3 つは整数スコアを持ち、そのうちの 2 つは時間ベースのスコア (ゲームを完了する速さ) を持っています。

iTunes Connect で設定したリーダーボード (ハイスコアを100 分の 1 秒までの時間形式reportScore:で最低から最高まで表示する) が時間形式でユーザーのスコアを受け取るように、方法を設定するにはどうすればよいですか?

としてお送りしたいと思いますNSTimeInterval

Apple Docs が指定するメソッドは、整数のみをスコアとして受け入れます。

- (void) reportScore: (int64_t) score forCategory: (NSString*) category
{
    GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category];
    scoreReporter.value = score;

    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
        if (error != nil)
        {
            //handle the score to submit again later
        }
    }];
}

アップデート

これについて調査したところ、Game Center リーダーボードにはint64_t. では、リーダーボードが 100 分の 1 秒までの時間としてフォーマットするように、この整数をフォーマットするにはどうすればよいでしょうか?

ご協力いただきありがとうございます!

4

1 に答える 1

5

Appleのドキュメントから:

スコア オブジェクトによって提供される値は、表示用にフォーマットされている場合にのみ、Game Center によって解釈されます。iTunes Connect でリーダーボードを定義するときに、スコアのフォーマット方法を決定します。

つまり、時間を整数に変換して送信する必要があります。1/100の精度が必要な場合は、浮動小数点NSTimeIntervalを 100 倍して整数に丸め (例: 1.567 秒 -> 157)、それを送信し、それに応じてリーダーボードのフォーマットを選択します (「経過時間 - 100 分の 1 まで」 1 秒」、私の記憶が正しければ)。

于 2012-10-26T16:09:57.277 に答える