我正在制作一个回合制游戏,我希望在游戏视图中显示您正在玩的用户名。
显示您自己的用户名,我可以使用
[[GKLocalPlayer localPlayer] alias];
我想知道是否有像这样的简单代码来查看连接的玩家别名,这是一个回合制游戏所以我相信没有恒定的连接,并且必须在轮到她的时候发送名称?还是这种想法不正确?
希望有人可以帮助我
我正在制作一个回合制游戏,我希望在游戏视图中显示您正在玩的用户名。
显示您自己的用户名,我可以使用
[[GKLocalPlayer localPlayer] alias];
我想知道是否有像这样的简单代码来查看连接的玩家别名,这是一个回合制游戏所以我相信没有恒定的连接,并且必须在轮到她的时候发送名称?还是这种想法不正确?
希望有人可以帮助我
不幸的是,我认为没有任何简单的代码可以做到这一点。我遇到了同样的问题。
我解决它的方法是使用以下代码片段:
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.
}];
}
希望这可以帮助!
我做了一个类扩展。
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