如何从Leaderboard Game Center获取本地玩家的分数?我试过这段代码,但它什么也没返回。任何人都知道如何解决它,或者有更好的方法如何获得分数?
- (NSString*) getScore: (NSString*) leaderboardID
{
__block NSString *score;
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil)
{
leaderboardRequest.identifier = leaderboardID;
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
if (error != nil)
{
NSLog(@"%@", [error localizedDescription]);
}
if (scores != nil)
{
int64_t scoreInt = leaderboardRequest.localPlayerScore.value;
score = [NSString stringWithFormat:@"%lld", scoreInt];
}
}];
}
return score;
}
我认为,该方法必须等待完成 [leaderboardRequest loadScoresWithCompletionHandler: ...
这可能吗?
最佳答案
您的代码似乎没有任何我能看到的错误。我建议显示标准排行榜界面,以查看报告分数的代码是否真正正常工作。如果是这样,您应该会在排行榜中看到分数。下面的代码在我的游戏中有效,我知道分数报告工作正常,因为它显示在默认游戏中心 UI 中。
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
leaderboardRequest.identifier = kLeaderboardCoinsEarnedID;
[leaderboardRequest loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else if (scores) {
GKScore *localPlayerScore = leaderboardRequest.localPlayerScore;
CCLOG(@"Local player's score: %lld", localPlayerScore.value);
}
}];
如果您不确定如何操作,下面的代码应该可以显示默认排行榜 (iOS7):
GKGameCenterViewController *gameCenterVC = [[GKGameCenterViewController alloc] init];
gameCenterVC.viewState = GKGameCenterViewControllerStateLeaderboards;
gameCenterVC.gameCenterDelegate = self;
[self presentViewController:gameCenterVC animated:YES completion:^{
// Code
}];
关于iphone - 如何从Game Center获取本地玩家分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21591123/