这听起来像是委托模式的工作。
为LevelScene添加协议;
// LevelScene.swift
protocol LevelScene : class {
var gameDelegate: GameDelegate? { get set }
}
添加GameDelegate协议;
// GameDelegate.swift
protocol GameDelegate : class {
func gameOver()
}
在 mainScene 中添加协议引用并创建一个名为 gameDelegate 的属性;
class MainScene: SKScene, LevelScene {
weak var gameDelegate: GameDelegate?
}
在您的 GameViewController 中添加协议引用并实现所需的协议函数 - 在本例中,它称为 gameOver 并像往常一样连接到您的 UIKit 视图;
class GameViewController: UIViewController, GameDelegate {
func gameOver() {
self.performSegue(withIdentifier: ExitGameSegueKey, sender: self)
}
}
呈现场景时将delegate设置为gameViewController;
scene.gameDelegate = self
然后在mainScene中需要时调用委托函数;
self.gameDelegate?.gameOver()