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 回答