GKLeaderboardのすべてのスコアを取得するにはどうすればよいですか?(私は自分のリーダーボードグラフィックを作成しています)。特定のリーダーボードのスコア数を知る必要がありますが、そのような情報についてGCをポーリングする方法はないようです。
3 に答える
答えはGKLeaderboardのmaxRangeプロパティだと感じています。ドキュメント:
このプロパティは、loadScoresWithCompletionHandler:の呼び出しが完了するまで無効です。その後、クエリに適用したフィルターを指定して、ゲームに戻るために使用できるエントリの総数が含まれます。
したがって、これはリーダーボードテーブルビューの行数になります。
アップルのドキュメントには、リーダーボードスコアの取得というセクションがあり、トップ10のスコアを取得する方法の例を使用しています。
- (void) retrieveTopTenScores
{
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil)
{
leaderboardRequest.playerScope = GKLeaderboardPlayerScopeGlobal;
leaderboardRequest.timeScope = GKLeaderboardTimeScopeAllTime;
leaderboardRequest.range = NSMakeRange(1,10);
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
if (error != nil)
{
// handle the error.
}
if (scores != nil)
{
// process the score information.
}
}];
}
}
leaderboardRequest
より多くのスコアを取得するために、の範囲を編集することができます、アップルはそこの文書で言いました:
範囲
検索から返される数値スコアランキング。
@property(nonatomic, assign) NSRange range
ディスカッション範囲
リーダーボードリクエストがinitWithPlayerIDs:メソッドを使用して初期化された場合、プロパティは無視されます。それ以外の場合、rangeプロパティは、ゲームに返されるスコアをフィルタリングするために使用されます。たとえば、[1,10]の範囲を指定した場合、検索が完了すると、ゲームは上位10のスコアを受け取ります。デフォルトの範囲は[1,25]です。
最小インデックスは1です。最大長は100です。
すべてのスコアを取得するには、Scarが詳細に示す範囲を使用してチャンクでスコアを要求する必要があります。通常、ゲームでは、たとえば100のサブセットを表示し、ユーザーに下位サブセットまたは上位サブセットを表示するオプションを提供します。