我在SpriteKit游戏上工作,该游戏通过MultipeerConnectivity连接到另一台设备。我将所有的Connection内容放在一个额外的ConnectionManager.swift文件中来清理代码。
接收数据时,会调用ConnectionManager.swift类中的函数将数据转换为Float,并将值传递给GameScene.swift类中的函数。
GameViewController.swift:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let scene = GameScene(size: view.bounds.size)
let skView = view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .resizeFill
skView.presentScene(scene)
}
}
GameScene.swift:
class GameScene: SKScene {
var scoreLabel = SKLabelNode()
let ConnectionsManager = ConnectionManager()
func dummyText(Spieler: Int, Anweisung: Float) {
print("dummyText")
scoreLabel.text = String(Anweisung)
}
ConnectionManager.swift:这是应该将值传递给GameScene()的函数.duadText()
class ConnectionManager: NSObject, MCSessionDelegate, MCNearbyServiceBrowserDelegate, MCNearbyServiceAdvertiserDelegate {
func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
print("Etwas erhalten!")
NSLog("%@", "Etwas erhalten!")
// Trying with dummy Value
GameScene().dummyText(Spieler: 1, Anweisung: 200 )
}
}
通过使用GameScene(),我假设我创建了一个新实例,而不是使用已经显示并且我想要操作的GameScene。不幸的是我不知道如何正确使用不同的类。对我来说最好的解决方案是将ConnectionManager类称为GameViewController的某种ChildClass,所以我可以调用super.dummyText()之类的函数。
除了快速学习几周外,我还是个新手。我搜索了这个问题很长一段时间,我发现了一些结果,但没有解决方案对我有用。这就是我在这里发布一个新主题的原因。在此先感谢您的帮助!