我需要一些帮助,在SpriteKit中设置委托,第二个场景中的函数没有被调用,但我就是不知道我做错了什么。
非常感谢
protocol receivingStringDelegate:class {
func didReceiveString(message:String)
}
class GameScene: SKScene {
weak var gamescene_transmissiondelegate: receivingStringDelegate?
private func sendString(message:String){
gamescene_transmissiondelegate?. didReceiveString(message)
}
}
class SecondScene: SKScene, receivingStringDelegate {
// here I get stuck, what to do?
var gameScene : GameScene = GameScene()
override func didMove(to view: SKView) {
gameScene.gamescene_transmissiondelegate = self
}
func didReceiveString(message:String) {
print ("hi there", message)
}
}
我想用场景属性与全局类来做。
class ConnectionScene: SKScene {
private var player1pos: CGPoint = CGPoint.zero
private var player2pos: CGPoint = CGPoint.zero
///some code in this scene sets player positions
func startMultiplayerGame() {
//this assumes your scene is setup in the editor not programmatically
if let gameScene = GameScene(fileNamed: "GameScene") {
gameScene.scaleMode = .aspectFill
gameScene.player1pos = player1pos
gameScene.player2pos = player2pos
self.view?.presentScene(multiplayerScene, transition: SKTransition.reveal(with: .down, duration: 1.0))
}
}
}
class GameScene: SKScene {
var player1pos: CGPoint = CGPoint.zero
var player2pos: CGPoint = CGPoint.zero
override func sceneDidLoad() {
//sceneDidLoad happens first
super.sceneDidLoad()
//do setup that doesn't require passed in variables in here
//this isn't set from connectScene yet so won't have the values
print("player1pos \(player1pos)")
print("player2pos \(player2pos)")
}
override func didMove(to view: SKView) {
//didMove happens last and already has the variables assigned
//now do setup that requires these variables
//this now has value from connectScene
print("player1pos \(player1pos)")
print("player2pos \(player2pos)")
}
}