1

ターン制のゲームを作っていますが、対戦しているユーザー名をゲームビューに表示したいと思います。

自分のユーザー名を表示するには

[[GKLocalPlayer localPlayer] alias];

接続されたプレイヤーのエイリアス名を表示するためのこのような簡単なコードがあるかどうか疑問に思っていました。これはターンベースのゲームなので、一定の接続はなく、名前は彼女のターンの彼をプレイして送信する必要があると思いますか?またはそれは正しくないと思いますか?

誰かが私を助けてくれることを願っています

4

2 に答える 2

2

残念ながら、これを行うための簡単なコードはないと思います。私は同じ問題に遭遇しました。

私がそれを解決した方法は、次のコードスニペットを使用することでした。

GKTurnBasedParticipant *otherParticipant;
for (GKTurnBasedParticipant *participant in match.participants) {
    if (NO == [participant.playerID isEqualToString:[GKLocalPlayer localPlayer].playerID]) {
        otherParticipant = participant;
    }
}

if (nil != otherParticipant && nil != otherParticipant.playerID) {
    [GKPlayer loadPlayersForIdentifiers:@[ otherParticipant.playerID ]
                  withCompletionHandler:^(NSArray *players, NSError *error) {
                      // Here, `players` is an array of `GKPlayer`s. You can
                      // access the `displayName` or `alias` property here.
                  }];
}

お役に立てれば!

于 2013-03-06T15:33:47.243 に答える
0

クラス拡張を行いました。

GKTurnBasedMatchExtensions.h

@interface GKTurnBasedMatch (GKTurnBasedMatchExtensions)
@property(nonatomic, readonly) GKTurnBasedParticipant* opponent;
@end

GKTurnBasedMatchExtensions.c

#import "GKTurnBasedMatchExtensions.h" 

@implementation GKTurnBasedMatch (GKTurnBasedMatchExtensions)
-(GKTurnBasedParticipant*)opponent
{
  GKTurnBasedParticipant *firstPlayer = self.participants[0];
  return ([firstPlayer.playerID isEqualToString:GKLocalPlayer.localPlayer.playerID]) ? self.participants[1] : self.participants[0];
}
@end

そして、私はこれを行うことができます:

#import "GKTurnBasedMatchExtensions.h"

match.opponent.player.alias
于 2015-02-16T22:16:09.420 に答える