[GKLocalPlayer localPlayer]是否在第一次通话时返回有效信息?

时间:2011-09-01 01:51:51

标签: iphone ios game-center

有什么要求......

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

据我所知,这总是返回一个对象,所有字段都设置为nil,而不管当前登录的播放器的开始。直到你打电话......

[localPlayer authenticateWithCompletionHandler:^(NSError *error)

......你得到了一名球员。这个调用只是获取一个对象然后调用authenticateWithCompletionHandler:from?

可以安全地假设在第一次通话时,它永远不会有有效的玩家信息吗?我假设它拥有在设备上登录Game Center的玩家的玩家信息,但事实并非如此(这将非常方便)。

在等待有效的玩家ID时,游戏应该做什么?在一个糟糕的联系,玩家可以完成成就甚至得分。我知道你应该在建立连接之前保存信息,但是如果没有播放器ID,我就无法保存为某个特定播放器标记的内容,就像你在简单的发送分数时失败一样。

在上面的示例中,玩家A开始游戏,得到一个分数并在经过身份验证之前退出游戏。然后玩家B登录并开始游戏并从玩家A获得分数。

如果我保存最后一个玩家ID并且只是使用它,你会遇到玩家B在玩家A之后开始游戏并且所有分数都转到玩家A,或者在玩家B开始时玩家A丢失的情况。

或者只是不值得担心这样的事情,因为它有可能发生在1%左右?

或者我只是错过了所有这些东西的简单解决方案?

游戏中心只是一堆乱七八糟的边缘情况。 Apple可以在这个API上做得更好。

0 个答案:

没有答案