检索 GKLLeaderboard 中的所有分数

问题描述 投票:0回答:4

如何检索 GKLeaderboard 的所有分数? (我正在制作自己的排行榜图形)。我需要知道某个排行榜中的分数,但似乎没有办法通过轮询 GC 来获取此类信息?

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/LeaderBoards/LeaderBoards.html#//apple_ref/doc/uid/TP40008304-CH6-SW14

ios leaderboard
4个回答
1
投票

在苹果文档中,有一个名为“检索排行榜分数”的部分,他们使用了如何检索前 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。


1
投票

此属性在调用之前无效 loadScoresWithCompletionHandler:已完成。之后,它包含 可返回游戏的条目总数 您应用于查询的过滤器。

http://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLeaderboard_Ref/Reference/Reference.html#//apple_ref/occ/instp/GKLeaderboard/maxRange

所以这将是排行榜表视图中的行数。


0
投票


0
投票
GKGameCenterViewController

那样。想要这样做有两个原因:


作为
    GKGameCenterViewController 中报告的深色排行榜问题的解决方法,在运行 iPadOS 16 的 iPad 上深色背景上显示为黑色文本
  1. 允许使用分数的上下文来丰富显示的信息。
  2. 在检查了
GKLeaderboard

的(未弃用的)功能后,我得出以下结论:


功能
    loadEntries(for:timeScope:range:completionHandler:)
  • 似乎是可用的最佳功能。
    完成处理程序接收 
  • totalPlayerCount
  • 作为第三个参数。这为最初10年前的问题——如何获取某个排行榜上的分数数量——提供了答案!
  • 但是...范围只允许获取前 100 名中的分数(最小值 1,最大值 100)。
  • 查看评论
  • 我尝试提供一个违反最小/最大规则的范围,并导致崩溃。

还有另一个

loadEntries

功能,可让您获取您可以识别的其他玩家的分数。这可以用来获取朋友的分数,但除此之外没有多大帮助。

所以对于iOS14+,底线是:虽然至少可以确定排行榜中有多少分数,但似乎只能获取本地玩家自己的分数和前100的分数。

看评论

© www.soinside.com 2019 - 2024. All rights reserved.