实例成员 'playerID' 不能用于类型 'GKPlayer'
Instance member 'playerID' cannot be used on type 'GKPlayer'
我开始在我的 iOS 应用程序中实现 Game Center,我想在应用程序的其他地方使用玩家 ID 作为我的唯一标识符。但是,当我尝试声明一个变量时:
var playerID: String? { GKPlayer.playerID }
我收到错误 Instance member 'playerID' cannot be used on type 'GKPlayer'.
查看 Game Center 文档我没有找到任何可以帮助我的东西(但很可能是我,而不是文档)。在声明 playerID 之前是否需要执行一些代码?这一切都是在我验证本地播放器之后完成的,fwiw。
我是否需要使用 loadPlayers(forIdentifiers:withCompletionHandler:)
来获取单个本地用户的 ID?
您需要先获取播放器对象,然后您可以为每个对象查找playerID。 loadPlayers
不会有帮助,因为您必须在调用 loadPlayers 时已经知道所需的播放器 ID。
有两个地方可以获取玩家对象。首先,"local player" 已登录到设备上的 Game Center。其次,实时和回合制比赛都包含当时参加该比赛的所有玩家的列表。
我不知道 swift 语法,但在 obj-c 中,获取本地播放器的 ID 如下所示:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
NSString *playerID = localPlayer.playerID
比赛对象将包含该场比赛中所有球员的对象数组。在一个实时的 GKMatch
对象中,属性 被称为 players
。在回合制 GKTurnBasedMatch
对象中,属性 称为 participants
。例如,获取回合制比赛的参与者列表如下:
for (GKTurnBasedMatchParticipant *participant in match.participants)
{
GKPlayer *player = participant.player;
NSString *playerID = player.playerID;
}
请注意,在回合制比赛中,当您为 6 名玩家创建比赛时,创建者(本地玩家)占据第一个位置。参与者 2-6 将是空的,直到这些玩家真正加入游戏(在他们的第一轮)。
获得 playerID 后,您可以将其用作其余代码中的标识符。之后,如果你想查询某个玩家的详细信息,你可以使用你想查询的玩家ID调用loadPlayers
。
我开始在我的 iOS 应用程序中实现 Game Center,我想在应用程序的其他地方使用玩家 ID 作为我的唯一标识符。但是,当我尝试声明一个变量时:
var playerID: String? { GKPlayer.playerID }
我收到错误 Instance member 'playerID' cannot be used on type 'GKPlayer'.
查看 Game Center 文档我没有找到任何可以帮助我的东西(但很可能是我,而不是文档)。在声明 playerID 之前是否需要执行一些代码?这一切都是在我验证本地播放器之后完成的,fwiw。
我是否需要使用 loadPlayers(forIdentifiers:withCompletionHandler:)
来获取单个本地用户的 ID?
您需要先获取播放器对象,然后您可以为每个对象查找playerID。 loadPlayers
不会有帮助,因为您必须在调用 loadPlayers 时已经知道所需的播放器 ID。
有两个地方可以获取玩家对象。首先,"local player" 已登录到设备上的 Game Center。其次,实时和回合制比赛都包含当时参加该比赛的所有玩家的列表。
我不知道 swift 语法,但在 obj-c 中,获取本地播放器的 ID 如下所示:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
NSString *playerID = localPlayer.playerID
比赛对象将包含该场比赛中所有球员的对象数组。在一个实时的 GKMatch
对象中,属性 被称为 players
。在回合制 GKTurnBasedMatch
对象中,属性 称为 participants
。例如,获取回合制比赛的参与者列表如下:
for (GKTurnBasedMatchParticipant *participant in match.participants)
{
GKPlayer *player = participant.player;
NSString *playerID = player.playerID;
}
请注意,在回合制比赛中,当您为 6 名玩家创建比赛时,创建者(本地玩家)占据第一个位置。参与者 2-6 将是空的,直到这些玩家真正加入游戏(在他们的第一轮)。
获得 playerID 后,您可以将其用作其余代码中的标识符。之后,如果你想查询某个玩家的详细信息,你可以使用你想查询的玩家ID调用loadPlayers
。