如何从GameViewController向SKView添加SKSpritenode?

时间:2018-08-25 08:01:42

标签: swift sprite-kit

嗨,我是Swift和SpriteKit的新手,无论如何,我都想为一个项目开发游戏。我将一个按钮拖到Main.storyboard上,并将其代码连接到GameViewController.swift

我的按钮代码和当前尝试在下面,

@IBAction func TroopB1(_ sender: AnyObject) {
    let newGS = GameScene()
    newGS.spawnEnemy()
}

现在我要做的是在GameScene.swift中调用一个函数,该函数创建一个SKSpriteNode(在我的Player类中定义)并将其添加到Game中。

GameScene.swift中的功能代码如下,

func spawnTroop() {
    let newTroop = Player(imageNamed: "Troop1")
    newTroop.loadtroop()
    self.addChild(newTroop)
}

类播放器定义为SKSpritNode,loadtroop只是定义一些属性和SKSpritenodes物理主体。

谁能帮助我告诉我如何从GameViewController.swift中的按钮功能-TroopB1-调用GameScene中的spawnTroop()函数,并在我的游戏中创建一个新的SKSpritenode,因为到目前为止所有尝试均未成功?

1 个答案:

答案 0 :(得分:0)

创建了这样的新场景后,您致电spawnEnemy()

let newGS = GameScene()

您创建的新场景与SKView中显示的场景不同。您在此场景中生成了部队,而不是所显示的场景。

访问呈现的场景的一种方法是:

((self.view as? SKView)?.scene as? GameScene).spawnTroop()

我们首先以VC SKView访问VC正在控制的视图,然后以GameScene访问视图中呈现的场景,然后调用该方法。