0

カスタム リーダーボードを作成していますが、プレーヤー ID を知りたいだけです。

このスレッドを見つけました:ゲーム センター リーダーボードで史上最高のローカル認証プレイヤーのランク

しかし、私はそれを実装するのに問題があります。ここに私が持っているものがあります:

-(void) retrieveScoresForPlayers:(NSArray*)players
                        category:(NSString*)category
                           range:(NSRange)range
                     playerScope:(GKLeaderboardPlayerScope)playerScope
                       timeScope:(GKLeaderboardTimeScope)timeScope
{
    if (isGameCenterAvailable == NO)
        return;

    GKLeaderboard* leaderboard = nil;
    if ([players count] > 0)
    {
        //leaderboard = [[[GKLeaderboard alloc] initWithPlayerIDs:players] autorelease];
        leaderboard = [[[GKLeaderboard alloc] initWithPlayerIDs:[NSArray arrayWithObject:[GKLocalPlayer localPlayer]]] autorelease];
    }
    else
    {
        leaderboard = [[[GKLeaderboard alloc] init] autorelease];
        leaderboard.playerScope = playerScope;
    }

    if (leaderboard != nil)
    {
        leaderboard.timeScope = timeScope;
        leaderboard.category = category;
        leaderboard.range = range;

        [leaderboard loadScoresWithCompletionHandler:^(NSArray* scores, NSError* error)
         {
             [self setLastError:error];
             //[delegate onScoresReceived:scores];
             if (_gkhDelegate != NULL) {
                 _gkhDelegate->onScoresReceived([self convertNSArrayOfGKScoresToCppVector:scores]);
             }
         }];
    }
}

ただし、ランクを出力するときは常に、実際の数に関係なく常に 1 です。クエリでランクを返していると思われます。リーダーボードで絶対位置を返すにはどうすればよいですか?

4

1 に答える 1

0

スコアを受け取った後、onScoresReceivedデリゲート メソッドを呼び出してスコアのベクトルを渡しているようです。

そのデリゲート メソッドを実装して、必要に応じてスコアのベクトルを取得し、オブジェクトをスコアで並べ替えることができるようにする必要があります (既に並べ替えられているかどうかはわかりません)。それぞれGKScoreに、playerそのプレーヤーがローカルプレーヤーと一致するかどうかを比較および確認できるプロパティがあります。

于 2015-02-04T02:06:41.517 に答える