【问题标题】:How to add a SKSpritenode to SKView from GameViewController?如何从 GameViewController 向 SKView 添加 SKSpritenode?
【发布时间】:2018-08-25 08:01:41
【问题描述】:

您好,总的来说,我对 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)
}

Class Player 被定义为一个 SKSpritNode,而 loadtroop 只定义了一些属性和 SKSpritenodes 物理体。

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

【问题讨论】:

  • spawnEnemy 在第一个代码 sn-p 应该是spawnTroop 对吧?

标签: swift sprite-kit


【解决方案1】:

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

let newGS = GameScene()

您创建的新场景与SKView 中呈现的场景不同。你在这个场景中产生了一支部队,而不是呈现的场景。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-31
    • 2016-05-16
    • 2015-11-14
    • 2014-11-22
    • 2016-07-27
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多