gpt4 book ai didi

ios - 奇怪的 GameKit 错误。 GKLocalPlayer 正在返回对手

转载 作者:行者123 更新时间:2023-11-29 02:25:32 25 4
gpt4 key购买 nike

我正在使用游戏中心制作 Sprite Kit 多人游戏。

我正在使用以下代码获取本地播放器。

GKLocalPlayer.localPlayer()

我用它来获取像玩家 ID 和别名这样的东西:

GKLocalPlayer.localPlayer().playerID
GKLocalPlayer.localPlayer().alias

非常简单。但最奇怪的事情发生了。偶尔在比赛期间 GKLocalPlayer.localPlayer() 会返回对手(即其他玩家)的玩家 ID 和别名。可以想象,这会导致各种问题。

一些附加信息:

  • 是的,我对所有用户进行了身份验证。
  • 两个用户都使用不同的帐户登录到 Game Center 沙盒服务器。
  • 如上所述,本地播放器最初是正确的。但是在建立播放器之间的连接并且我开始发送数据包之后,本地播放器偶尔会返回错误的用户。之后它会继续返回错误信息,直到应用程序被重置。
  • 我已经测试了几个小时。我很肯定这不是我。事实上,据我所知,Apple 不允许您以编程方式更改 GKLocalPlayer。
  • 我在实际设备上运行的是 iOS 8。

这是一个已知问题吗?有人有什么建议吗?我真的很茫然。我想也许我可以尝试调用 GKLocalPlayer.localPlayer() 并保存属性(在奇怪的错误发生之前),而不是不断调用 GKLocalPlayer.localPlayer() 来访问本地播放器。但话又说回来,这只是一种解决方法。

编辑:

为了测试这个问题,我正在运行一个像这样的简单计时器:

NSTimer .scheduledTimerWithTimeInterval(1.0, target: self, selector: "test", userInfo: nil, repeats: true)
func test() {
println("\(GKLocalPlayer.localPlayer().playerID)")
}

输出是这样的:(我没有显示整个玩家 ID)。注意 playerID 是如何变化的。而且查了一下,确实是改成对方的playerID。别名等也是如此。

G:43...
G:43...
G:43...
G:43...
G:43...
G:43...
G:84...
G:84...
G:84...
G:84...

最佳答案

我也遇到了这个问题。问题是您正在来回传递本地播放器。所以,当本地播放器进来的时候,经过反序列化,传入的播放器就变成了本地播放器。

我通过实现我自己的具有 displayName 和 playerID 的播放器对象来解决这个问题。您可以从本地玩家创建一个 guest 玩家并使用它来传递。只是不要传递本地玩家。

关于ios - 奇怪的 GameKit 错误。 GKLocalPlayer 正在返回对手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com