如何从 sks 文件加载节点,然后应用场景编辑器中定义的动作

How to load nodes from sks file and then apply action defined in Scene Editor

我有两个 sks 文件,一个有节点,另一个有动作,都是在场景编辑器中创建的。我想加载节点并将它们添加到另一个节点,然后对它们应用操作,例如:

override func sceneDidLoad() {

    let heroScene = SKScene(fileNamed: "Hero")
    let head = heroScene?.childNode(withName: "HeroHead") as! SKSpriteNode
    let testAction = SKAction(named: "HeroTestAction") as! SKAction
    let loop = SKAction.repeatForever(testAction)
    let hero = SKSpriteNode(color: SKColor.white.withAlphaComponent(0) , size: CGSize(width: 50, height: 250))
    let body = SKSpriteNode(color: SKColor.blue, size: CGSize(width: 50, height: 50))

    head.removeFromParent()
    hero.addChild(head)
    hero.addChild(body)
    self.addChild(hero)

    head.run(loop)
    body.run(loop)

}

但操作不适用于 head。如果我将循环应用到 bodyhero 它会起作用。

我做错了什么?谢谢!

更新:当我第一次 运行 示例时,操作不起作用,但如果关闭应用程序并再次 运行 它是有效的。

我想说的是有一个有趣的 "feature" 当你抓取一个像这样的参考精灵时它会以 isPaused = true;

的形式出现

尝试添加这个

head.isPaused = false;

我相信我 运行 在从另一个场景抓取精灵时遇到过类似的问题。