如何检索 GKLeaderboard 的所有分数? (我正在制作自己的排行榜图形)。我需要知道某个排行榜中的分数,但似乎没有办法通过轮询 GC 来获取此类信息?
在苹果文档中,有一个名为“检索排行榜分数”的部分,他们使用了如何检索前 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],搜索完成后,你的游戏 获得前十名的分数。默认范围是 [1,25]。
最小索引为1。最大长度为100。
GKGameCenterViewController
那样。想要这样做有两个原因:
作为GKLeaderboard
的(未弃用的)功能后,我得出以下结论:
功能loadEntries(for:timeScope:range:completionHandler:)
还有另一个
loadEntries
功能,可让您获取您可以识别的其他玩家的分数。这可以用来获取朋友的分数,但除此之外没有多大帮助。
所以对于iOS14+,底线是:虽然至少可以确定排行榜中有多少分数,但似乎只能获取本地玩家自己的分数和前100的分数。看评论