2

等待 Game Center 身份验证完成是个坏主意,因为这可能需要很长时间。此外,身份验证不仅在游戏启动时进行,而且在您通过快速应用切换切换回游戏时进行。

但是不等待身份验证会出现问题:

  • 如果您不知道玩家是谁,如何恢复已保存的游戏?理想情况下,保存的游戏将与正在玩的人相关联,这样您就不会有人继续玩其他人的游戏。

  • 如果您不知道玩家是谁(玩家可能已通过 Game Center 应用更改),您如何在应用切换回后恢复游戏?

  • 动作游戏中可能会弹出 Game Center 登录警报(不会暂停)

  • 如果游戏在身份验证完成之前就结束了怎么办?如果在玩了几场比赛后完成了初始身份验证怎么办?如果初始身份验证在应用程序切换或两次后完成(这反过来会导致更多身份验证)怎么办?

处理这些问题的合理方法是什么?

4

1 回答 1

1

嗯..我只在应用程序启动时进行身份验证..当您想要验证播放器时由您自己设置..您可能希望在播放器第一次验证时保存播放器别名..意味着:

sharedData.myName =  [[GKLocalPlayer localPlayer]alias];

因此,当玩家应用程序切换和东西,但未通过身份验证时,您将数据保存在此玩家别名下。所以当玩家最终通过身份验证时,您将数据发送到 GameCenter

在您检查 GameCenter 部分中的含义..

if(!inGame)
{
  [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error){
        if(error == nil){
  if(sharedData.myName ==nil)
  {
    sharedData.myName = [[GKLocalPlayer localPlayer]alias];
  }
  else if([[GKLocalPlayer localPlayer]alias] == sharedData.myName)
  {
    [self sendSavedData];
  }
  else if([[GKLocalPlayer localPlayer]alias] != sharedData.myName)
  {
    // create new data or look for other saved data which has the same name..
    // set sharedData.myName to current player Name..
  }
}

enter code here
于 2011-02-21T03:11:41.717 回答