显示别名游戏中心回合制游戏

时间:2012-06-10 12:45:11

标签: iphone objective-c ios xcode

我正在制作回合制游戏,我希望在游戏视图中显示您正在玩的用户名。

显示您自己的用户名我可以使用

[[GKLocalPlayer localPlayer] alias];

我想知道如果有这样的简单代码来查看连接的玩家别名,这是一个基于回合制的游戏所以我相信没有持续的连接而且名字必须发送一些玩她的轮到她?或者这是不正确的?

希望有人可以帮助我

2 个答案:

答案 0 :(得分: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.
                  }];
}

希望这有帮助!

答案 1 :(得分: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