iOS排行榜GameCenter

时间:2012-04-29 01:42:52

标签: iphone ios ipad monogame

我正在尝试将排行榜与我的iOS游戏集成。

我看到GKScore类需要一个类别,但是,我只有一个排行榜。我没有在任何地方看到字段类别。我有一个排行榜ID,排行榜参考名称和本地化下的排行榜名称。我使用哪一个,如果有的话?

我提交两个账户的分数,但是,我从未在排行榜上看到任何分数。我正在使用模拟器。

1 个答案:

答案 0 :(得分:3)

首先,不要使用模拟器。如果可以,请使用设备,因为许多功能(如向游戏中心提交分数)在模拟器上不起作用。您是否尝试记录尝试得分报告返回的错误?这将为您提供有关未来困难的更多详细信息。要回答您的问题,请使用排行榜ID作为类别。以下是您可以用来提交类别分数的示例函数:

在头文件中定义isGameCenterAvailable bool并使用以下代码设置其值:

Class gameKitLocalPlayerClass = NSClassFromString(@"GKLocalPlayer");        
bool isLocalPlayerAvailable = (gameKitLocalPlayerClass != nil);     

// Test if device is running iOS 4.1 or higher
NSString* reqSysVer = @"4.1";
NSString* currSysVer = [[UIDevice currentDevice] systemVersion];
bool isOSVer41 = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending);

isGameCenterAvailable = (isLocalPlayerAvailable && isOSVer41);
NSLog(@"GameCenter available = %@", isGameCenterAvailable ? @"YES" : @"NO");

使用此方法提交分数:

-(void) submitScores:(int64_t)score category:(NSString*)category {

    if (!isGameCenterAvailable){
        return;
    }

    GKScore* gkScore = [[[GKScore alloc] initWithCategory:category] autorelease];
    gkScore.value = score;

    [gkScore reportScoreWithCompletionHandler:^(NSError* error) {
        bool success = (error == nil);
        if(!success){
            NSLog(@"Error Reporting High Score: %@", [[error userInfo] description]);
        }
        [delegate onScoresSubmitted:success];
    }];
}

此代码由Steffen Itterheim撰写,他撰写了一本关于cocos2d游戏开发的精彩书籍。以下是他和其他许多产品的链接:http://www.learn-cocos2d.com/