Xcode 使用GameSecene作为参数将其传递给另一个类-Swift2

Xcode 使用GameSecene作为参数将其传递给另一个类-Swift2,xcode,swift,swift2,xcode7,Xcode,Swift,Swift2,Xcode7,我试图将所有设置函数都放在一个名为setup的单独类中,如下所示: class Setup { var scene: GameScene! init(scene: GameScene){ self.scene = scene } func setupBackground(bg1: SKSpriteNode, bg2: SKSpriteNode) { bg1.anchorPoint = CGPointZero bg

我试图将所有设置函数都放在一个名为setup的单独类中,如下所示:

class Setup {
    var scene: GameScene!

    init(scene: GameScene){
        self.scene = scene
    }

    func setupBackground(bg1: SKSpriteNode, bg2: SKSpriteNode) {
        bg1.anchorPoint = CGPointZero
        bg1.position = CGPointMake(0, 0)
        bg1.size = CGSize(width: scene.size.width, height: scene.size.height)
        scene.addChild(bg1)

        bg2.anchorPoint = CGPointZero
        bg2.position = CGPointMake(0, bg1.size.height + 1)
        bg2.size = CGSize(width: scene.size.width, height: scene.size.height)
        scene.addChild(bg2)
    }
}
然后在游戏场景中这样称呼它:

class GameScene: SKScene, SKPhysicsContactDelegate {
    var bg1 = SKSpriteNode(imageNamed: "lightSky")
    var bg2 = SKSpriteNode(imageNamed: "lightSky")
    var setup = Setup(self)

    override func didMoveToView(view: SKView) {
        self.size = view.bounds.size
        physicsWorld.gravity = CGVectorMake(0, -1.0)
        physicsWorld.contactDelegate = self

        setup.setupBackground(bg1, bg2: bg2)
    }
}
class GameScene: SKScene, SKPhysicsContactDelegate {
    var bg1 = SKSpriteNode(imageNamed: "lightSky")
    var bg2 = SKSpriteNode(imageNamed: "lightSky")

    var setup: Setup!

    override func didMoveToView(view: SKView) {
        self.size = view.bounds.size
        physicsWorld.gravity = CGVectorMake(0, -1.0)
        physicsWorld.contactDelegate = self

        setup = Setup(scene: self)

        setup.setupBackground(bg1, bg2: bg2)
    }
}
但是我得到了一个错误:

无法使用类型为“(NSObject->()->GameSecene)”的参数列表调用类型“Setup”的初始值设定项


因此,我猜测场景参数的类型是错误的,但不知道哪一个是正确的。

它的初始化方式如下:

class GameScene: SKScene, SKPhysicsContactDelegate {
    var bg1 = SKSpriteNode(imageNamed: "lightSky")
    var bg2 = SKSpriteNode(imageNamed: "lightSky")
    var setup = Setup(self)

    override func didMoveToView(view: SKView) {
        self.size = view.bounds.size
        physicsWorld.gravity = CGVectorMake(0, -1.0)
        physicsWorld.contactDelegate = self

        setup.setupBackground(bg1, bg2: bg2)
    }
}
class GameScene: SKScene, SKPhysicsContactDelegate {
    var bg1 = SKSpriteNode(imageNamed: "lightSky")
    var bg2 = SKSpriteNode(imageNamed: "lightSky")

    var setup: Setup!

    override func didMoveToView(view: SKView) {
        self.size = view.bounds.size
        physicsWorld.gravity = CGVectorMake(0, -1.0)
        physicsWorld.contactDelegate = self

        setup = Setup(scene: self)

        setup.setupBackground(bg1, bg2: bg2)
    }
}

游戏场景
中,在哪里创建
设置
变量?请展示它是如何初始化的。它现在可以工作了,多亏了你:)事情是我在创建GameSecene后直接给self打电话请求GameSecene。我将用正确的代码回答这个问题,以防以后有人想知道如何解决它。