gpt4 book ai didi

ios - 从 GameCenter 发送和接收数据 : Swift

转载 作者:行者123 更新时间:2023-11-28 08:17:30 25 4
gpt4 key购买 nike

我正在创建一个使用 GameCenter 的游戏,并且我正在尝试发送和检索数据。

这就是我发送数据的方式:(“sendData”函数由 GameCenter 和 GameKit 提供)

let nick = GCHelper()
let data = NSData(contentsOfFile: "")
try! nick.match.sendData(toAllPlayers: data as! Data, with: .reliable)

'GCHelper' 是我正在使用的一个类,它包含 Game Center 的许多功能,如果您有兴趣,可以通过问题进一步下载。我只需要调用它来访问该函数。

然后为了检索数据,我尝试使用这个:

nick.match(GKMatch, didReceive: Data, fromPlayer: String)

注意:以上参数我都没有填写

这是我用来检索数据的函数:

public func match(_ theMatch: GKMatch, didReceive data: Data, fromPlayer playerID: String) {
if match != theMatch {
return
}

delegate?.match(theMatch, didReceiveData: data, fromPlayer: playerID)
}

我使用的函数“match()”是 GCHelper 类的一部分。 GCHelper 让您可以更轻松地创建 GameCenter 游戏。如果您想引用它,这里有一个链接:https://github.com/jackcook/GCHelper

问题既然我已经向您展示了所有方法,那么我将如何使用前面的方法来检索数据呢?它的参数之一是“fromPlayer”并要求提供 playerId(String),但我怎么知道其他玩家的 playerID 是什么?更重要的是,我该如何取回它?

如果您认为这不是处理检索数据的好方法,我怎样才能做得更好?还有其他方法吗?

关键事实:游戏需要 2 个人,数据仅在这 2 个人之间交换。我需要知道如何在两者之间发送和检索数据。谢谢您的帮助!如果您有任何问题,请告诉我。

最佳答案

这是我用来检索数据的函数:

open func match(_ theMatch: GKMatch, didReceive data: Data, fromPlayer playerID: String) {
}

现在,我发送的数据是一个字符串。因此,我创建了一个变量来取消归档数据并将其设置为字符串格式。

let myString = NSKeyedUnarchiver.unarchiveObject(with: data) as! String

在此之后,我需要一种方法将该字符串从 View Controller 或游戏中心文件获取到我的游戏场景。我在其中只是使用 UserDefaults 存储数据。

let user = UserDefaults.standard
user.set(myString, forKey: "myString")

然后在我的 SKScene 中我创建了一个计时器,它每隔几秒检查一次以查看是否有变化。它存储这些值,以便当新值到达时它可以进行比较,如果不同,它会对其执行一些操作,例如:更新玩家点数。

注意:这是我发现的工作方式,其他人可能有更好的方法,但对我来说效果很好。

关于ios - 从 GameCenter 发送和接收数据 : Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42215344/

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