-1

我有这个基于回合的游戏,我的游戏中心正在运行,排行榜仅在提交点工作时没有按应有的方式进行。在我的游戏中,我有一个UILabel显示我的分数,每次你玩游戏时,它都会得到你以前的高分,所以你可以让它更高,我使用这个代码:

if([GKLocalPlayer localPlayer].authenticated) 
{
    NSArray *arr = [[NSArray alloc] initWithObjects:[GKLocalPlayer localPlayer].playerID, nil];
    GKLeaderboard *board = [[GKLeaderboard alloc] initWithPlayerIDs:arr];

    if(board != nil)
    {
        board.timeScope = GKLeaderboardTimeScopeAllTime;
        board.range = NSMakeRange(1, 1);
        board.category = @"750";
        [board loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {

            if (error != nil)
            {
                // handle the error.
                NSLog(@"Error retrieving score.", nil);
            }
            if (scores != nil)
            {
                NSString *scrVal = [NSString stringWithFormat: @"%i", ((GKScore*)[scores objectAtIndex:0]).value + 1];
                //score += 2500;
                //NSString *scrVal = [NSString stringWithFormat:@"%d",score];
                lblScore.text = scrVal;

                GKScore *myScoreValue = [[[GKScore alloc] initWithCategory:@"750"] autorelease];
                myScoreValue.value = scrVal;

                [myScoreValue reportScoreWithCompletionHandler:^(NSError *error) {

                    if(error != nil)
                    {
                        NSLog(@"Score Submission Failed");
                    }
                    else {
                        NSLog(@"Score Submitted");
                    }
                }];
            }
        }];
    }
    [board release];
    [arr release];
}

我刚刚尝试过,它确实提交了一个分数,但不是正确的分数,正如您在我的代码中看到的那样,我希望它提高 1 个分数。之前的分数是 2120,它显示了,但是当我输入正确的单词并且这段代码正在运行时,它使我的新排行榜得分为 287,343,904,所以这就像后来的另外 2.8 亿个单词,但我只是做了一个。

希望有人能解释我做错了什么?

4

1 回答 1

0

来自 GKScore 类参考:

value
The score earned by the player.

@property(nonatomic, assign) int64_t value

value 是一个 int,但您正在设置一个指向它的字符串指针。

于 2012-06-21T19:30:29.440 回答