我想在我的GameViewController和SKScene文件之间设置委托,但遇到错误。我的目标是从SKScene文件中调用方法。
错误是:类型'GameScene'的值没有成员'gameViewControllerDelegate'
我在做什么错了?
预先感谢
MainSC.swift
import UIKit
import SpriteKit
import Firebase
import StoreKit
import GoogleMobileAds
class MainVC: UIViewController, GameViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "GameScene") {
let gameScene = scene as! GameScene
//THIS GUY THROWING ERROR
gameScene.gameViewControllerDelegate = self
gameScene.scaleMode = .aspectFill
gameScene.size.width = 414
gameScene.size.height = 736
view.presentScene(gameScene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
view.showsPhysics = true
}
}
func callMethod(inputProperty:String) {
print("inputProperty is: ",inputProperty)
}
}
MainSC.swift
import UIKit
import SpriteKit
import GameplayKit
import Firebase
import GoogleMobileAds
protocol GameViewControllerDelegate : class {
func callMethod(inputProperty:String)
}
class MainSC: SKScene {
weak var gameViewControllerDelegate : GameViewControllerDelegate?
override func didMove(to view: SKView) {
...
gameViewControllerDelegate?.callMethod(inputProperty: "call game view controller method")
}
}
答案 0 :(得分:1)
您没有在MainVC中将gameViewControllerDelegate委托设置为self,所以如何调用该SKscene的委托。因此在MainVC中将其设置为self