在 spritekit 场景编辑器中使用自定义 SKNodes

Using custom SKNodes in spritekit scene editor

我想使用 SKNode 的自定义子class创建关卡。我尝试将 SKNode 添加到场景编辑器并使用 "Custom Class" 选项卡给出我想要的 class 但这绝对没有任何作用。该节点仍然是空的,当我 运行 模拟器时什么也不会显示。此外,为了确保 class 确实有效,我以编程方式将它的一个实例添加到场景中,以查看它是否显示并且确实如此。

如何通过场景编辑器将自定义节点添加到场景中?

这是我的自定义 class 代码:

class Player: SKSpriteNode {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        print("Test")
        self.addChild(SKSpriteNode(imageNamed: "Player.png"))
    }
}

您需要做两件事:

1) 设置自定义 Class 时,您必须在 class 名称前加上您应用的名称;例如 My_App_Name.MyClass,其中 _ 表示 space。

2) 您的 SKNode subclass 需要实施 required init?(coder aDecoder: NSCoder).


例如,在我名为 'MyGame' 的项目中:

class MyNode: SKSpriteNode {
    // Set this after the node has been initaliser by init(coder:)
    var someStat: Int = 0

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        // To check it worked:
        print("Yup, all working")
    }
}

我在 Xcode 8 中遇到了同样的问题。 这听起来很愚蠢,但要应用自定义 class,我必须在 运行.

之前 保存 .sks 文件

.sks 文件不会自动保存,这与文本文件或故事板不同。