Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从另一个类调用genericnode类中的函数_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 从另一个类调用genericnode类中的函数

Ios 从另一个类调用genericnode类中的函数,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,在我的GameSecene.swift类中尝试调用genericnode类中的endGame()函数时卡在这里。当我试图通过调用gamesene().endGame()访问它时,我得到了错误: 无法在没有参数的情况下调用类型“GameSecene”的初始值设定项 游戏场景: class GameScene: SKScene, SKPhysicsContactDelegate { required init?(coder aDecoder: NSCoder) { super

在我的GameSecene.swift类中尝试调用genericnode类中的
endGame()
函数时卡在这里。当我试图通过调用
gamesene().endGame()
访问它时,我得到了错误:

无法在没有参数的情况下调用类型“GameSecene”的初始值设定项

游戏场景:

class GameScene: SKScene, SKPhysicsContactDelegate {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override init(size: CGSize){
        super.init(size: size)
    }

    func endGame() {
        gameOver = true
        scoreboardSetup()
    }
}
carNode.swift

enum CarType:Int {
    case normalCar = 0
}

class carNode: GenericNode {
    var carType:carType!

    override func collisionWithPlayer(player: SKNode) -> Bool {
        GameScene().endGame() //Gives me an error

        return false
    }
}

在初始化
游戏场景时,您需要传入一个
CGSize
,就像
游戏场景一样(大小:CGSize(宽度:0,高度:0)。endGame()
或者您可以将
endGame()
方法设为静态。
static endGame()
然后像
GameScene.endGame()那样调用它
希望这有帮助。这些解决方案都不起作用。对于
游戏场景(大小:CGSize(宽度:0,高度:0)。endGame()
我遇到致命错误:在展开可选值时意外发现零。对于
静态endGame())
i get error一行中的连续声明必须用“;”分隔,不需要所有这些。您应该直接在场景中处理碰撞并运行endGame()从这里开始。这个方法除了结束游戏之外什么都不做,所以把它作为CarNode类的一部分是没有意义的。所以,我所说的,这对你来说是一个最简单的方法。否则,你可以使用委派(场景将作为CarNode类的委派)来完成这项工作.从未听说过这种方法,威尔会读到。你能举个例子说明如何进行吗delegation@riik在这种情况下,类型方法(静态)将不起作用。您对类型而不是实例调用类型方法。endGame()显然,游戏结束了…意味着,它会重置场景,移除节点,显示分数,转换到另一个场景,诸如此类的东西…例如,self.view.presentScene()之类的东西将不可能实现,等等。或者在初始化
游戏场景时,您需要传入
CGSize
,比如
游戏场景(大小:CGSize(宽度:0,高度:0).endGame()
或者,您可以将
endGame()
方法设置为静态。
static endGame()
然后像
GameSecene.endGame()
那样调用它。这些解决方案都不起作用。对于
游戏场景(大小:CGSize(宽度:0,高度:0)。endGame())
i get Fatal error:在展开可选值时意外发现nil。对于
static endGame()
i get error,一行上的连续声明必须用“;”分隔,不需要所有这些。您应该直接在场景中处理冲突并运行endGame()从这里开始。这个方法除了结束游戏之外什么都不做,所以把它作为CarNode类的一部分是没有意义的。所以,我所说的,这对你来说是一个最简单的方法。否则,你可以使用委派(场景将作为CarNode类的委派)来完成这项工作.从未听说过这种方法,威尔会读到。你能举个例子说明如何进行吗delegation@riik在这种情况下,类型方法(静态)将不起作用。您对类型而不是实例调用类型方法。endGame()显然,游戏结束了…意味着,它重置场景,移除节点,显示分数,转换到另一个场景,诸如此类的事情…例如,self.view.presentScene()之类的东西将不可能实现,等等。